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, F
G
e 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)