ホームページ  >  記事  >  バックエンド開発  >  Flatten または Reshape は、多次元入力を含む Keras 高密度レイヤーの前に行われますか?

Flatten または Reshape は、多次元入力を含む Keras 高密度レイヤーの前に行われますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-21 07:57:02641ブラウズ

Does Flatten or Reshape Precede a Keras Dense Layer with Multi-Dimensional Input?

入力形状エラー: 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 レイヤーが行全体で共有重みを効果的に実装することを意味します。
  • TimeDistributed との同等性: 時系列データの場合、TimeDistributed(Dense(...) を使用します) ) は、シングルステップ予測タスクの Dense(...) と同等になりました。

視覚的な図

よりよく理解するには、次のことを考慮してください。図:

[重みが行間で共有され、高密度レイヤーが多次元入力にどのように適用されるかを示す図の画像]

結論

前述のエラーを回避するには、適用前に Dense レイヤーへの入力がフラット化されていることを確認してください。あるいは、多次元入力を処理する場合は、特定のネットワーク アーキテクチャに対するその影響と潜在的な利点を考慮して、Dense レイヤーの新しい動作を採用してください。

以上がFlatten または Reshape は、多次元入力を含む Keras 高密度レイヤーの前に行われますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。