我正在建立一个CNN-LSTM网络,并且在我TimeDistributed CNN层之前它一直工作良好。由于尺寸差异,程序现在正在输出ValueError,我似乎无法通过调整输入尺寸来解决。我怀疑该错误可能是由于CNN输出大小和LSTM预期输入之间的差异,但我将输出展平了,所以我真的不知道。
X_train = X_train.reshape(1772, 300, 188, 1)
X_test = X_test.reshape(586, 300, 188, 1)
y_train = np.array(y_train)
y_test = np.array(y_test)
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
model = Sequential()
model.add(TimeDistributed(Conv2D(64, kernel_size=(12, 12), activation='relu', input_shape=(1772, 300, 188, 1))))
model.add(TimeDistributed(Conv2D(128, (6, 6), activation='relu')))
model.add(TimeDistributed(MaxPooling2D(pool_size=(4, 4))))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(64))
model.add(Dense(4, activation='softmax'))
答案 0 :(得分:0)
问题在于,通过添加包装的TimeDistributed,您需要添加一个Timestep维度。
这里您的输入有4个暗淡的(batch_size, height, width, channels)
,但您的图层是:
model.add(TimeDistributed(Conv2D(64, kernel_size=(12, 12), activation='relu', input_shape=(1772, 300, 188, 1))))
期望输入5为暗淡的(batch_size, timestep, height, width, channels)
。
因此,您需要在输入中添加其他昏暗效果!