質問: tf.keras.models.Sequential() model.add( tf.keras.layers.Reshape((60, 60, 1), input_shape=(60, 60)) ) model.add( tf.keras.layers.Conv2D(64, (3, 3), activation='relu') ) model.add( tf.keras.layers.MaxPooling2D(pool_size=(2,2)) ) model.add( tf.keras.layers.Flatten() ) model.add( tf.keras.layers.Dense(128, activation='relu') ) model.add( tf.keras.layers.Dense(2, activation='softmax') ) コード` 上記コードは画像サイズ60*60の2分類(トレーニングデータが各100枚ずつ)に関するモデルなのですが, 畳み込み後は58*58の画像64枚,プーリング後は29*29の画像64枚,(ここまでは合ってますか...?) その後,flattenを用いた後の全結合層へ移る際のノードの中の値としては何が格納されるのでしょうか? またノードの数は,プーリング後の画像の枚数である64になるのでしょうか?
回答: > > 畳み込み後は58*58の画像64枚,プーリング後は29*29の画像64枚,(ここまでは合ってますか...?) > > > model.summary() の出力で確認してください。 > > その後,flattenを用いた後の全結合層へ移る際のノードの中の値としては何が格納されるのでしょうか? > > またノードの数は,プーリング後の画像の枚数である64になるのでしょうか? > > > flatten の入力が (バッチサイズ, H, W, C) だとすると、flatten ではこれを (バッチサイズ, H * W * C) とバッチ次元を除き1次元に潰します。 numpy で再現すると以下のようになります。 ``` import numpy as np x = np.arange(54).reshape(2, 3, 3, 3) print(x) x = x.reshape(len(x), -1) print(x) ```