Dela via


Sekventiellt

Skapar en matris med funktioner i en ny funktion som anropar dessa funktioner en efter en ("framåt funktionssammansättning").

Sequential (arrayOfFunctions)

Parametrar

arrayOfFunctions: en BrainScript-matris med funktioner, t.ex. konstruerad med operatorn : : (LinearLayer{1024} : Sigmoid)

Returvärde

Den här funktionen returnerar en annan funktion. Den returnerade funktionen tar ett argument och returnerar resultatet av att tillämpa alla angivna funktioner i följd på indata.

Description

Sequential() är en kraftfull åtgärd som gör det möjligt att komprimera en mycket vanlig situation i neurala nätverk där indata bearbetas genom att sprida den genom en förlopp av lager. Du kanske känner till det från andra verktyg för neurala nätverk.

Sequential() tar en matris med funktioner som argument och returnerar en ny funktion som anropar funktionen i ordning, varje gång utdata för en skickas till nästa. Ta det här exemplet:

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

Här är kolonet (:) BrainScripts syntax för att uttrycka matriser. Är till exempel (F:G:H) en matris med tre element, F, Goch H. I Python skulle till exempel detta skrivas som [ F, G, H ].

Funktionen FGH som definieras ovan innebär samma som

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

Detta kallas "funktionssammansättning" och är särskilt praktiskt för att uttrycka neurala nätverk, som ofta har den här formen:

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

som uttrycks perfekt av Sequential (F:G:H).

Slutligen bör du vara medveten om att följande uttryck:

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

betyder något annat än:

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

I den senare formen tillämpas samma funktion med samma delade uppsättning parametrar två gånger, medan de två lagren i den förra har separata uppsättningar parametrar.

Exempel

Standard 4-dolt layer feed-forward-nätverk som används i det tidigare djupt neurala nätverket arbete med taligenkänning:

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)