2
Conv2Dレイヤーと画像上のLSTMレイヤーを組み合わせようとしています。 問題は、Conv2Dレイヤーがチャンネル数を含む4Dテンソルを入力として受け取り、私のLSTMネットワークが3Dテンソルを必要とすることです。可変長シーケンスと畳み込みレイヤーとLSTMレイヤーの組み合わせ
問題はバケッティングを使用しているため、入力にあらかじめ定義されたタイムステップ数がないことです。私はそのようなことをしたかった:
input_data = Input(shape=[None, nb_features, 1])
cnn1 = Conv2D(nb_filters, kernel_size)(input_data)
cnn2 = Conv2D(nb_filters, kernel_size)(cnn1)
reshape = Reshape(target_shape=[None, nb_features])(cnn2)
gru1 = Bidirectional(GRU(rnn_size, return_sequences=True))(reshape)
gru2 = Bidirectional(GRU(rnn_size, return_sequences=True))(gru1)
out = TimeDistributed(Dense(nblabels))(gru2)
output = Activation('softmax')(out)
しかし、変形層は完全に定義された形を必要とする。この問題の解決法はありますか?
「nb_features」とは何ですか? Conv1Dの代わりにConv2D(例:2D画像)を使用してもよろしいですか? --- PS:図形に "None"を使わず、リストの代わりにタプル '(nb_features、1)'を使います。 –
この場合、nb_featuresは画像の高さになりますが、これは一定です。そして、私はTimeDistributed Conv1Dではなく、画像全体にConv2Dが必要だと確信しています。私がNoneを使う理由は、シーケンスの長さを可変にする必要があるからです。 – Moi4167
私はTimeDistributed Conv1Dを意味するものではなく、conv1Dを意味します。 –