Delen via


Sequentieel

Hiermee wordt een matrix van functies samengesteld in een nieuwe functie die deze functies na elkaar aanroept ('functiesamenstelling doorsturen').

Sequential (arrayOfFunctions)

Parameters

arrayOfFunctions: een BrainScript-matrix met functies, bijvoorbeeld gemaakt met de : operator: (LinearLayer{1024} : Sigmoid)

Retourwaarde

Deze functie retourneert een andere functie. Deze geretourneerde functie heeft één argument en retourneert het resultaat van het toepassen van alle opgegeven functies op volgorde op de invoer.

Description

Sequential() is een krachtige bewerking waarmee u compact een zeer algemene situatie kunt uitdrukken in neurale netwerken waarbij een invoer wordt verwerkt door deze door een voortgang van lagen door te geven. U bent er mogelijk bekend mee vanuit andere neurale netwerk-toolkits.

Sequential() gebruikt een matrix van functies als argument en retourneert een nieuwe functie die deze functie in volgorde aanroept, telkens wanneer de uitvoer van een aan de volgende wordt doorgegeven. Kijk eens naar dit voorbeeld:

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

Hier is de dubbele punt (:) de syntaxis van BrainScript voor het uitdrukken van matrices. Is bijvoorbeeld (F:G:H) een matrix met drie elementen, F, Gen H. In Python zou dit bijvoorbeeld worden geschreven als [ F, G, H ].

De FGH hierboven gedefinieerde functie betekent hetzelfde als

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

Dit staat bekend als 'functiesamenstelling', en is vooral handig voor het uitdrukken van neurale netwerken, die vaak deze vorm hebben:

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

dat perfect wordt uitgedrukt door Sequential (F:G:H).

Ten slotte moet u rekening houden met de volgende expressie:

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

betekent iets anders dan:

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

In de laatste vorm wordt dezelfde functie met dezelfde gedeelde set parameters tweemaal toegepast, terwijl in de eerste laag de twee lagen afzonderlijke sets parameters hebben.

Voorbeeld

Standaard 4 verborgen laagfeed-forward-netwerk zoals gebruikt in het eerdere deep-neurale netwerk werken aan spraakherkenning:

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)