Secuencial
Compone una matriz de funciones en una nueva función que llama a estas funciones una después de otra ("composición de funciones reenviadas").
Sequential (arrayOfFunctions)
Parámetros
arrayOfFunctions
: una matriz BrainScript de funciones, por ejemplo, construida con el :
operador : (LinearLayer{1024} : Sigmoid)
Valor devuelto
Esta función devuelve otra función. Esa función devuelta toma un argumento y devuelve el resultado de aplicar todas las funciones dadas en secuencia a la entrada.
Descripción
Sequential()
es una operación eficaz que permite expresar de forma compacta una situación muy común en redes neuronales donde se procesa una entrada mediante la propagación a través de una progresión de capas.
Es posible que esté familiarizado con él desde otros kits de herramientas de red neuronal.
Sequential()
toma una matriz de funciones como argumento y devuelve una nueva función que invoca esta función en orden, cada vez que pasa la salida de una a la siguiente.
Considere este ejemplo:
FGH = Sequential (F:G:H)
y = FGH (x)
Aquí, los dos puntos (:
) son la sintaxis de BrainScript de expresar matrices. Por ejemplo, (F:G:H)
es una matriz con tres elementos, F
, G
y H
.
En Python, por ejemplo, esto se escribiría como [ F, G, H ]
.
La FGH
función definida anteriormente significa lo mismo que
y = H(G(F(x)))
Esto se conoce como "composición de funciones" y es especialmente conveniente para expresar redes neuronales, que a menudo tienen esta forma:
+-------+ +-------+ +-------+
x -->| F |-->| G |-->| H |--> y
+-------+ +-------+ +-------+
que se expresa perfectamente mediante Sequential (F:G:H)
.
Por último, tenga en cuenta que la siguiente expresión:
layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)
significa algo diferente de lo siguiente:
layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)
En este último formato, la misma función con el mismo conjunto compartido de parámetros se aplica dos veces, mientras que en la primera, las dos capas tienen conjuntos independientes de parámetros.
Ejemplo
Red de reenvío de capa 4 oculta estándar como se usa en el trabajo anterior de red neuronal profunda en el reconocimiento de voz:
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)