Udostępnij przez


Sekwencyjny

Tworzy tablicę funkcji w nową funkcję, która wywołuje te funkcje po drugiej ("tworzenie funkcji do przodu").

Sequential (arrayOfFunctions)

Parametry

arrayOfFunctions: tablica funkcji BrainScript, np. skonstruowana z operatorem : : (LinearLayer{1024} : Sigmoid)

Wartość zwracana

Ta funkcja zwraca inną funkcję. Ta zwracana funkcja przyjmuje jeden argument i zwraca wynik zastosowania wszystkich podanych funkcji w sekwencji do danych wejściowych.

Opis

Sequential() to zaawansowana operacja, która pozwala kompaktowo wyrażać bardzo powszechną sytuację w sieciach neuronowych, w których dane wejściowe są przetwarzane przez propagowanie ich przez progresję warstw. Być może znasz go z innych narzędzi sieci neuronowych.

Sequential() pobiera tablicę funkcji jako argument i zwraca nową funkcję, która wywołuje tę funkcję w kolejności, za każdym razem przekazując dane wyjściowe jednego do następnego. Rozważ taki przykład:

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

W tym miejscu dwukropek (:) to składnia języka BrainScript do wyrażania tablic. Na przykład (F:G:H) jest tablicą z trzema elementami, F, Gi H. Na przykład w języku Python zostanie to napisane jako [ F, G, H ].

Zdefiniowana FGH powyżej funkcja oznacza to samo co

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

Jest to nazywane "kompozycją funkcji" i jest szczególnie wygodne w przypadku wyrażania sieci neuronowych, które często mają następującą formę:

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

który jest doskonale wyrażony przez Sequential (F:G:H).

Na koniec należy pamiętać, że następujące wyrażenie:

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

oznacza coś innego niż:

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

W drugiej formie ta sama funkcja z tym samym udostępnionym zestawem parametrów jest stosowana dwa razy, podczas gdy w pierwszej warstwie mają oddzielne zestawy parametrów.

Przykład

Standardowa sieć 4-ukrytego przekazywania kanału informacyjnego używana we wcześniejszej sieci neuronowej głębokiej pracy nad rozpoznawaniem mowy:

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)