前提・実現したいこと
256個のデータから0~1の1つの値を出力する学習モデルを作っています。
色々調べてみて、
https://qiita.com/niisan-tokyo/items/a94dbd3134219f19cab1
こちらのリンクに書かれていることが一番近いのでこれをベースに作ることにしました。
リンク先では64個の入力データから16個の出力データを得ていますが、これを256個の入力、1個の出力にするにはどうすれば良いのでしょうか?
説明を見る感じMaxPooling1Dで次元数を合わせていますが、256個を1つにしようとすると結構な数を使う必要があります。また、入力を128個だったり512個だったりに変えるたびにMaxPooling1Dを書き換えるのもかなりの手間です。
model.add(Conv2D(16,(3,3),input_shape=(img_y,img_x,3))) model.add(Activation("relu")) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Flatten()) model.add(Dense(64)) model.add(Activation("relu")) model.add(Dense(2)) model.add(Activation("softmax"))
例えば画像分類では上記のようにDenseで出力次元を調整していますが、これを1次元の畳込みでやろうとするとどうもエラーが発生してしまいます。
1次元のCNNではどのように出力次元数を調整するのでしょうか?
また、リンク先にある学習モデルにはDenseがありませんがコレは問題ないのでしょうか?
Conv1Dのフィルターについてもいまいち理解しておらず、どのような値を設定すれば良いのかもよくわかりません。
この3点について教えていただけると幸いです。
発生している問題・エラーメッセージ
ValueError: Error when checking target: expected activation_3 to have shape (128, 1) but got array with shape (1, 1)
該当のソースコード
model.add(Conv1D(128,8, padding='same', input_shape=(入力シーケンス長, 1), activation='relu')) model.add(Activation("relu")) model.add(MaxPooling1D(2, padding='same')) model.add(Dense(64)) model.add(Activation("relu")) model.add(Dense(1)) model.add(Activation("tanh"))
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/15 16:39