Compartilhar via


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, GFe 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)