ValueError:步幅应为1、1或3,但为2

问题描述 投票:1回答:1

火车输入形状:(13974,100,6,5)

火车输出形状:(13974,1,1)

测试输入形状:(3494,100,6,5)

测试输出形状:(3494,1,1)

我正在开发以下模型。 2D CNN LSTM。

model = Sequential()
model.add(TimeDistributed(Conv2D(1, (1,1), activation='relu', 
input_shape=(6,5,1))))
model.add(TimeDistributed(MaxPooling2D(pool_size=(6, 5))))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(units=300, return_sequences= False, input_shape=(100,1)))
model.add(Dense(1))

当我尝试符合以下条件时

model.fit(train_input,train_output,epochs=50,batch_size=60)

它给我一个错误。

ValueError:步幅的长度应为1、1或3,但为2

请更正我的模型。我将6,5幅图像转换为一个单位,并从100个时间戳中预测了101个时间戳。

image-processing keras conv-neural-network lstm keras-layer
1个回答
0
投票

您的问题还不清楚,但是我相信您有100张大小为6 x 5的图像的序列。最好在您的用例中合并Conv3D,而且也不必到处都有TimeDistributed。这仅是您的用例的说明,您可能必须添加ConvMaxPool的更多层,并尝试使用其他超参数以获得良好的拟合。

# Add the channel dimension in input
train_input = np.expand_dims(train_input, -1)
# Remove the extra dimension in output
train_output = np.reshape(train_output, (-1, 1))

model = Sequential()
model.add(Conv3D(1, (1,1,1), activation='relu', input_shape=(100, 6,5, 1)))
model.add(MaxPooling3D(pool_size=(6, 5, 1)))
model.add(Reshape((16, 5)))
model.add(LSTM(units=300, return_sequences= False))
model.add(Dense(1))
© www.soinside.com 2019 - 2024. All rights reserved.