Partilhar via


Sequencial

Compõe um conjunto de funções numa nova função que chama estas funções uma após a outra ("composição da função avançada").

Sequential (arrayOfFunctions)

Parâmetros

arrayOfFunctions: uma matriz de funções BrainScript, por exemplo, construídas com o : operador: (LinearLayer{1024} : Sigmoid)

Valor devolvido

Esta função devolve outra função. Essa função devolvida requer um argumento, e devolve o resultado da aplicação de todas as funções dadas em sequência à entrada.

Description

Sequential() é uma operação poderosa que permite expressar compactamente uma situação muito comum em redes neurais onde uma entrada é processada propagando-a através de uma progressão de camadas. Pode estar familiarizado com isso a partir de outros kits de ferramentas de rede neural.

Sequential() toma uma série de funções como argumento, e devolve uma nova função que invoca estas funções em ordem, cada vez que passa a saída de uma para a outra. Considere este exemplo:

FGH = Sequential (F:G:H)
y = FGH (x)

Aqui, o cólon (:) é a sintaxe do BrainScript de expressar matrizes. Por exemplo, (F:G:H) é uma matriz com três elementos, FGe H. Na Python, por exemplo, isto seria escrito como [ F, G, H ].

A FGH função acima definida significa o mesmo que

y = H(G(F(x))) 

Isto é conhecido como "composição de função", e é especialmente conveniente para expressar redes neurais, que muitas vezes têm esta forma:

     +-------+   +-------+   +-------+
x -->|   F   |-->|   G   |-->|   H   |--> y
     +-------+   +-------+   +-------+

que é perfeitamente expressa por Sequential (F:G:H).

Por último, tenha em atenção 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)

Nesta última forma, a mesma função com o mesmo conjunto partilhado de parâmetros é aplicada duas vezes , enquanto na primeira, as duas camadas têm conjuntos separados de parâmetros.

Exemplo

Rede padrão de alimentação de camadas 4 escondidas, tal como utilizada no trabalho de rede neural profunda anterior sobre o reconhecimento da 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)