入力形状エラー: Keras Dense Layer での平坦化と変形
典型的な Keras ネットワークでは、Dense 層は平坦化された入力データを期待します。単一の次元。ただし、高次元の入力データで Dense レイヤーを使用すると、一般的なエラーが発生します。これにより、次のような出力が得られる可能性があります。
<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>
不一致を理解する
ドキュメントとは異なり、高次元の入力は Dense を適用する前に平坦化されると記載されています。レイヤーでは、Keras の最近の更新によりこの動作が変更されました。レイヤーは入力テンソルの最後の軸に独立して適用されます。
上の例では、入力形状は (2, 3) です。 4 つのユニットを含む高密度レイヤーが各行に個別に適用され、(2, 4) の出力形状が得られます。
影響と考慮事項
この変更には特定の点があります。意味:
視覚的な図
よりよく理解するには、次のことを考慮してください。図:
[重みが行間で共有され、高密度レイヤーが多次元入力にどのように適用されるかを示す図の画像]
結論
前述のエラーを回避するには、適用前に Dense レイヤーへの入力がフラット化されていることを確認してください。あるいは、多次元入力を処理する場合は、特定のネットワーク アーキテクチャに対するその影響と潜在的な利点を考慮して、Dense レイヤーの新しい動作を採用してください。
以上がFlatten または Reshape は、多次元入力を含む Keras 高密度レイヤーの前に行われますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。