1) dense4096を二層重ねる意味はあります。例えばVGG16でCNNは何層もありますよね、それと同じです。モデルを深くします。
2) 2D-Convの最後の出力は3次元で、dense layerは入力・出力とも1次元です。3次元を1次元に変換するのがflattendです。Convとdense layerの間にflattenを省いてなぜエラーが起きないかはわかりません。dense layer二つの間にflattenを入れる意味はないと思います。
2Like
CNNを使った機械学習について質問があります。
Q1, VGG16などでDesne層4096の後にDense層4096、そこからDense層1000となっています。
つまり4096を2回経由する意味はあるんでしょうか?
Q2, Dense層の後にはFlatten層が置かれることが一般的ですが、先ほど、畳み込み層の後にDense層を置き、その後にFlattenを置くことができました。
この方法だと何が問題なのでしょうか?
一般的な構造: conv2d(max)→Flatten→Dense→Dense
エラーが起きない:conv2d(max)→Dense→Flatten→Dense
たとえば畳み込み層の後にFlattenを置かないとエラーになります。構造が間違っているからです。ですが、conv2d(max)→Dense→Flatten→Denseとした場合エラーが起きませんでした。構造的におかしいはず(やっている人を見たことがない)ですがまともに学習は進みます。だれか何がダメなのか教えていただけると助かります。
メイン質問はQ2でQ1の回答は無くても問題ないです。
1) dense4096を二層重ねる意味はあります。例えばVGG16でCNNは何層もありますよね、それと同じです。モデルを深くします。
2) 2D-Convの最後の出力は3次元で、dense layerは入力・出力とも1次元です。3次元を1次元に変換するのがflattendです。Convとdense layerの間にflattenを省いてなぜエラーが起きないかはわかりません。dense layer二つの間にflattenを入れる意味はないと思います。
@Amano_Masaki
Questioner