2
我試圖將Conv2D圖層與圖像上的LSTM圖層相結合。 問題在於Conv2D圖層需要輸入包括通道數量的4D張量,而我的LSTM網絡需要3D張量。將卷積圖層和LSTM圖層與可變長度序列相結合
問題是我使用bucketing,所以我的輸入沒有預定義的時間步數。我想這樣做:
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」?你確定你想要一個Conv2D(例如:2D圖像)而不是Conv1D(例如:一些時間變量)嗎? --- PS:不要在形狀中使用「無」,並使用元組''(nb_features,1)'而不是列表。 –
在這種情況下,nb_features將是我的圖像的高度,這將是恆定的。我確定我想在整個圖像上使用Conv2D,而不是TimeDistributed Conv1D。我使用None的原因是因爲我需要我的序列長度是可變的。 – Moi4167
我不是指TimeDistributed Conv1D,我的意思是一個conv1D。 –