逐次
これらの関数を 1 つずつ呼び出す新しい関数に関数の配列を作成します ("前方関数の構成")。
Sequential (arrayOfFunctions)
パラメーター
arrayOfFunctions
: 関数の BrainScript 配列。たとえば、演算子を使用して :
構築されます。 (LinearLayer{1024} : Sigmoid)
戻り値
この関数は別の関数を返します。 返された関数は 1 つの引数を受け取り、指定されたすべての関数を順番に入力に適用した結果を返します。
説明
Sequential()
は、層の進行を介して入力を伝達することによって入力が処理されるニューラル ネットワークの非常に一般的な状況をコンパクトに表現できる強力な操作です。
他のニューラル ネットワーク ツールキットから理解している可能性があります。
Sequential()
は関数の配列を引数として受け取り、次の関数に出力を渡すたびに、これらの関数を順番に呼び出す 新しい 関数を返します。
次の例について考えます。
FGH = Sequential (F:G:H)
y = FGH (x)
ここで、コロン (:
) は、配列を表す BrainScript の構文です。 たとえば、 (F:G:H)
3 つの要素 F
、、 G
および H
.
たとえば、Python では、これは次のように [ F, G, H ]
記述されます。
上記で定義した関数は FGH
、
y = H(G(F(x)))
これは "関数構成" と呼ばれ、多くの場合、この形式を持つニューラル ネットワークを表現する場合に特に便利です。
+-------+ +-------+ +-------+
x -->| F |-->| G |-->| H |--> y
+-------+ +-------+ +-------+
これは完全にによって表現されています Sequential (F:G:H)
.
最後に、次の式に注意してください。
layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)
とは異なるものを意味します。
layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)
後者の形式では、 同じ共有パラメーター セットを持つ同じ 関数が 2 回適用されますが、前者では、2 つのレイヤーに個別のパラメーター セットがあります。
例
以前のディープ ニューラル ネットワークで使用されている標準の 4 非表示層フィードフォワード ネットワークは、音声認識に関する作業を行います。
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)