Séquentiel
Compose un tableau de fonctions dans une nouvelle fonction qui appelle ces fonctions l’une après l’autre (« composition de fonction avant »).
Sequential (arrayOfFunctions)
Paramètres
arrayOfFunctions
: tableau de fonctions BrainScript, par exemple construit avec l’opérateur :
: (LinearLayer{1024} : Sigmoid)
Valeur retournée
Cette fonction retourne une autre fonction. Cette fonction retournée prend un argument et retourne le résultat de l’application de toutes les fonctions données en séquence à l’entrée.
Description
Sequential()
est une opération puissante qui permet d’exprimer de manière compacte une situation très courante dans les réseaux neuronaux où une entrée est traitée en la propageant à travers une progression des couches.
Vous serez peut-être familiarisé avec celui-ci à partir d’autres toolkits de réseau neuronal.
Sequential()
prend un tableau de fonctions comme argument et retourne une nouvelle fonction qui appelle cette fonction dans l’ordre, chaque fois que vous passez la sortie d’une à la suivante.
Prenons l’exemple suivant :
FGH = Sequential (F:G:H)
y = FGH (x)
Ici, le signe deux-points (:
) est la syntaxe de BrainScript d’expression de tableaux. Par exemple, (F:G:H)
il s’agit d’un tableau avec trois éléments, F
, G
et H
.
Dans Python, par exemple, cela serait écrit en tant que [ F, G, H ]
.
La FGH
fonction définie ci-dessus signifie la même chose que
y = H(G(F(x)))
Ceci est appelé « composition de fonction », et est particulièrement pratique pour exprimer des réseaux neuronaux, qui ont souvent cette forme :
+-------+ +-------+ +-------+
x -->| F |-->| G |-->| H |--> y
+-------+ +-------+ +-------+
qui est parfaitement exprimé par Sequential (F:G:H)
.
Enfin, sachez que l’expression suivante :
layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)
signifie quelque chose de différent de :
layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)
Dans ce dernier formulaire, la même fonction avec le même ensemble partagé de paramètres est appliquée deux fois, tandis que dans l’ancien, les deux couches ont des ensembles distincts de paramètres.
Exemple
Réseau de transfert de flux de couche 4 masqués standard, tel qu’il est utilisé dans le réseau deep-neuronal antérieur, effectuez la reconnaissance vocale :
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)