Sdílet prostřednictvím


Sekvenční

Vytvoří pole funkcí do nové funkce, která tyto funkce volá po druhé ("přeposlání složení funkce").

Sequential (arrayOfFunctions)

Parametry

arrayOfFunctions: Pole funkcí BrainScriptu, např. konstruované pomocí operátoru : : (LinearLayer{1024} : Sigmoid)

Vrácená hodnota

Tato funkce vrátí jinou funkci. Vrácená funkce přebírá jeden argument a vrátí výsledek použití všech zadaných funkcí v posloupnosti na vstup.

Description

Sequential() je výkonná operace, která umožňuje kompaktně vyjádřit velmi běžnou situaci v neurálních sítích, kde se vstup zpracovává jeho šířením přes průběh vrstev. Možná ho znáte z jiných nástrojů neurálních sítí.

Sequential() vezme jako argument pole funkcí a vrátí novou funkci, která vyvolá tyto funkce v pořadí, pokaždé, když předá výstup jednoho do dalšího. Podívejte se na tento příklad:

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

Tady je dvojtečka (:) syntaxe BrainScriptu pro vyjádření polí. Je například (F:G:H) pole se třemi prvky, , FGa H. Například v Pythonu by to bylo napsané jako [ F, G, H ].

Výše FGH definovaná funkce znamená totéž jako

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

To se označuje jako "složení funkce" a je zvlášť vhodné pro vyjádření neurálních sítí, které často mají tuto formu:

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

který je dokonale vyjádřen .Sequential (F:G:H)

Nakonec mějte na paměti, že následující výraz:

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

znamená něco jiného než:

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

Ve druhé formě se stejná funkce se stejnou sdílenou sadou parametrů se použije dvakrát, zatímco v dřívějších vrstvách mají dvě vrstvy samostatné sady parametrů.

Příklad

Standardní 4skrytá síť pro předávání kanálů vrstvy, jak se používá v dřívější hluboké neurální síti, pracuje na rozpoznávání řeči:

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)