Sequencial
Compõe uma matriz de funções em uma nova função que chama essas funções uma após a outra ("composição de função de encaminhamento").
Sequential (arrayOfFunctions)
Parâmetros
arrayOfFunctions
: uma matriz brainscript de funções, por exemplo, construída com o :
operador: (LinearLayer{1024} : Sigmoid)
Valor retornado
Essa função retorna outra função. Essa função retornada usa um argumento e retorna o resultado da aplicação de todas as funções fornecidas em sequência à entrada.
Descrição
Sequential()
é uma operação poderosa que permite expressar compactamente uma situação muito comum em redes neurais em que uma entrada é processada propagando-a por meio de uma progressão de camadas.
Você pode estar familiarizado com isso de outros kits de ferramentas de rede neural.
Sequential()
usa uma matriz de funções como argumento e retorna uma nova função que invoca essa função em ordem, cada vez passando a saída de uma para a outra.
Considere este exemplo:
FGH = Sequential (F:G:H)
y = FGH (x)
Aqui, os dois-pontos (:
) são a sintaxe do BrainScript de expressar matrizes. Por exemplo, (F:G:H)
é uma matriz com três elementos, G
F
e H
.
No Python, por exemplo, isso seria escrito como [ F, G, H ]
.
A FGH
função definida acima significa o mesmo que
y = H(G(F(x)))
Isso é conhecido como "composição de função" e é especialmente conveniente para expressar redes neurais, que geralmente têm essa forma:
+-------+ +-------+ +-------+
x -->| F |-->| G |-->| H |--> y
+-------+ +-------+ +-------+
que é perfeitamente expresso por Sequential (F:G:H)
.
Por fim, lembre-se de que a seguinte expressão:
layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)
significa algo diferente de:
layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)
No último formulário, a mesma função com o mesmo conjunto compartilhado de parâmetros é aplicada duas vezes, enquanto no primeiro, as duas camadas têm conjuntos de parâmetros separados.
Exemplo
Rede de feed-forward de camada oculta padrão 4, conforme usado no trabalho de rede neurais profunda anterior no reconhecimento de fala:
myModel = Sequential (
DenseLayer{2048, activation=Sigmoid} : # four hidden layers
DenseLayer{2048, activation=Sigmoid} :
DenseLayer{2048, activation=Sigmoid} :
DenseLayer{2048, activation=Sigmoid} :
DenseLayer{9000, activation=Softmax} # note: last layer is a Softmax
)
features = Input{40}
p = myModel (features)