[解決済み] Kerasにおける "Flatten "の役割とは?
質問内容
の役割を理解しようとしています。
Flatten
という関数があります。以下は私のコードで、単純な2層ネットワークです。形状(3, 2)の2次元データを取り込み、形状(1, 4)の1次元データを出力しています。
model = Sequential()
model.add(Dense(16, input_shape=(3, 2)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(4))
model.compile(loss='mean_squared_error', optimizer='SGD')
x = np.array([[[1, 2], [3, 4], [5, 6]]])
y = model.predict(x)
print y.shape
これは、次のようにプリントアウトします。
y
は形状が (1, 4) である。しかし、もし
Flatten
という行が表示されます。
y
は形状が(1,3,4)である。
これがわからないんです。私のニューラルネットワークの理解では
model.add(Dense(16, input_shape=(3, 2)))
関数は、16個のノードを持つ隠れ完全連結層を作成しています。これらのノードはそれぞれ3x2の入力要素に接続されています。したがって、この最初の層の出力にある16個のノードは、すでに"flat"です。したがって、第1層の出力形状は(1, 16)となるはずである。そして、第2層はこれを入力とし、(1, 4)の形状のデータを出力する。
では、第1層の出力がすでにquot;flat"で形状が(1, 16)の場合、なぜさらに平坦化する必要があるのでしょうか?
どのように解決するのですか?
のKerasドキュメントのエントリを読むと
Dense
というように、この呼び出しがあることがわかります。
Dense(16, input_shape=(5,3))
を使用すると、結果的に
Dense
のネットワークは、3つの入力と16の出力を持ち、5つのステップごとに独立して適用されます。つまり、もし
D(x)
は3次元のベクトルを16次元のベクトルに変換し、出力として得られるのは一連のベクトルである。
[D(x[0,:]), D(x[1,:]),..., D(x[4,:])]
形状
(5, 16)
. 指定した動作をさせるために、最初に
Flatten
の入力を15次元ベクトルに変換し、そのベクトルに
Dense
:
model = Sequential()
model.add(Flatten(input_shape=(3, 2)))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(4))
model.compile(loss='mean_squared_error', optimizer='SGD')
EDITです。 わかりにくいという声がありましたので、説明用の画像を用意しました。
関連
-
[解決済み] イプシロン貪欲q学習におけるイプシロンと学習率の減衰について
-
[解決済み] エアフローとKubeflowパイプラインの違いは何ですか?
-
[解決済み] コスト関数、線形回帰、シータをハードコーディングしないようにする。オクターブ
-
[解決済み] kerasのtrain_on_batch()の使い道は?
-
[解決済み】ニューラルネットワークにおけるバイアスの役割とは?[クローズド]
-
[解決済み】同じ問題で binary_crossentropy と categorical_crossentropy が異なる性能を示すのはなぜか?
-
[解決済み] Kerasにおける多対一および多対多のLSTMの例
-
[解決済み] Appleはどのように電子メールの日付、時間、アドレスを見つけるのですか?
-
[解決済み] フィーチャーとラベルの違いは何ですか?[クローズド]
-
[解決済み] なぜFメジャーはPrecisionとRecallの算術平均ではなく調和平均なのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Kerasにおける "Flatten "の役割とは?
-
[解決済み] kerasのFlatten()とGlobalAveragePooling2D()の違いは何ですか?
-
[解決済み] RuntimeError: 次元が範囲外([-1, 0]の範囲にあると期待されたが、1が得られた)
-
[解決済み] エアフローとKubeflowパイプラインの違いは何ですか?
-
[解決済み】ニューラルネットワークにおけるバイアスの役割とは?[クローズド]
-
[解決済み】教師あり学習と教師なし学習の違いは何ですか?[終了しました]
-
[解決済み] なぜ人工ニューラルネットワークの入力を正規化する必要があるのですか?[クローズド]
-
[解決済み] Appleはどのように電子メールの日付、時間、アドレスを見つけるのですか?
-
[解決済み] 期待値最大化手法の直感的な説明とは?[クローズド]
-
[解決済み] なぜFメジャーはPrecisionとRecallの算術平均ではなく調和平均なのですか?