Sequenziale

Compone una matrice di funzioni in una nuova funzione che chiama queste funzioni una dopo l'altra ("composizione di funzioni forward").

Sequential (arrayOfFunctions)

Parametri

arrayOfFunctions: matrice brainscript di funzioni, ad esempio costruita con l'operatore : : (LinearLayer{1024} : Sigmoid)

Valore restituito

Questa funzione restituisce un'altra funzione. Tale funzione restituita accetta un solo argomento e restituisce il risultato dell'applicazione di tutte le funzioni date in sequenza all'input.

Descrizione

Sequential() è un'operazione potente che consente di esprimere in modo compatto una situazione molto comune nelle reti neurali in cui un input viene elaborato propagandolo attraverso una progressione dei livelli. Si potrebbe avere familiarità con esso da altri toolkit di rete neurale.

Sequential() accetta una matrice di funzioni come argomento e restituisce una nuova funzione che richiama questa funzione in ordine, ogni volta che passa l'output di uno al successivo. Prendere in considerazione questo esempio:

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

In questo caso, i due punti (:) sono la sintassi di BrainScript per esprimere matrici. Ad esempio, (F:G:H) è una matrice con tre elementi, F, Ge H. In Python, ad esempio, questo verrebbe scritto come [ F, G, H ].

La FGH funzione definita in precedenza equivale a

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

Questo è noto come "composizione di funzioni" ed è particolarmente utile per esprimere le reti neurali, che spesso hanno questo formato:

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

che è perfettamente espresso da Sequential (F:G:H).

Infine, tenere presente che l'espressione seguente:

layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)

significa qualcosa di diverso da:

layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)

Nella seconda forma, la stessa funzione con lo stesso set condiviso di parametri viene applicata due volte, mentre in precedenza i due livelli hanno set separati di parametri.

Esempio

La rete di avanzamento dei feed forward a 4 livelli standard, come usato nella rete deep-neurale precedente, funziona sul riconoscimento 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)