Keras の高密度レイヤー入力が予期せず変形するのはなぜですか?

Barbara Streisand
リリース: 2024-10-21 07:57:30
オリジナル
228 人が閲覧しました

Why Does the Keras Dense Layer Input Reshape Unexpectedly?

Keras 高密度層入力での予期せぬ再形成: 謎の解明

Keras では、高密度層はニューラル ネットワークによく使用される構成要素です。ただし、ユーザーは、レイヤーの操作を適用する前に入力が平坦化されないという予期しない動作に遭遇する可能性があります。

提供されたコード スニペットでは:

input1 = layers.Input((2,3))
output = layers.Dense(4)(input1)
ログイン後にコピー

入力テンソル input1 を次のように平坦化する代わりに、次元 (2,3) の場合、驚くべきことに、次元 (?, 2, 4) の出力テンソル出力が観察されます。これは、ランクが 2 より大きい入力は平坦化されるべきであるというドキュメントの主張と矛盾します。

しかし、現在の Keras 実装を調べると、異なる動作が明らかになります。つまり、Dense レイヤーは実際には入力テンソルの最後の軸に適用されます。これは、指定された例では、input1 の各 2D 行が独立して密に接続された層を通過することを意味します。その結果、出力は最初の次元を保持し、指定された単位数 (4) を最後の次元に追加します。

このドキュメントからの逸脱は重大な影響を及ぼします。

  • 同等の演算多次元入力に対する TimeDistributed(Dense(...)) と Dense(...) の。
  • Dense 層のユニット間で共有される重み行列。

例:

model = Sequential()
model.add(Dense(10, input_shape=(20, 5)))

model.summary()
ログイン後にコピー

結果として得られるモデルの概要には、高密度に接続された層に 10 個のユニットがあるにもかかわらず、トレーニング可能なパラメーターが 60 個しか表示されません。これは、各ユニットが各行の 5 つの要素に同じ重みで接続されているためです。

ビジュアルイラスト:

[画像: 高密度レイヤーをレイヤーに適用するビジュアルイラストKeras の 2 次元以上の入力]

結論として、Keras の Dense 層は入力テンソルの最後の軸に独立して適用され、特定のシナリオでは出力が平坦化されません。この動作は、モデルの設計とパラメーターの共有に影響を与えます。

以上がKeras の高密度レイヤー入力が予期せず変形するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!