Keras 高密度レイヤーの出力形状の難題
Keras では、高密度レイヤーは、内積を適用する前に入力を平坦化することが長い間文書化されてきました。カーネル。しかし、最近の動作はそうではないことを示唆しています。
問題:
以下のテスト コードに示すように、Dense 層の出力は入力テンソルの最後の軸を維持します:
input1 = layers.Input((2,3)) output = layers.Dense(4)(input1) print(output)
出力:
<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>
答え:
ドキュメントとは異なり、Dense レイヤーは入力を平坦化しません。代わりに、最後の軸に沿って独立して操作を適用します。したがって、形状 (n_dim1, n_dim2, ..., n_dimk) の入力が与えられると、出力形状は (n_dim1, n_dim2, ..., m) になります。ここで、m は Dense 層内のユニットの数です。
影響:
この動作により、TimeDistributed(Dense(...)) と Dense(...) は機能的に同等になります。さらに、重みは最後の軸全体で共有されるため、入力形状 (n_dim1、n_dim2、...、n_dimk) を持つ密層には、m * n_dimk m (単位あたりのバイアス パラメーター) のみのトレーニング可能なパラメーターがあります。
ビジュアルイラスト:
[複数の次元の入力に高密度レイヤーが適用されたニューラル ネットワークのイメージ]
この図は、高密度レイヤーの操作がどのように独立して適用されるかを示しています入力テンソルの最後の軸に沿って。
以上がKeras Dense Layer が入力を平坦化するのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。