现在,我有70张200x200x1的图像(仅限一个频道)。 在操作model.fit之前,我将此训练日期的形状从(70,200,200,1)转换为(1,70,200,200,1)。(实际上我的代码是RNN)
所以我的RNN模型如下所示。
def get_RNN
input1 = Input((img_rows, img_cols, 1), name='input1') # (?,200,200,1)
conv1 = ConvLSTM2D(32, (3,3), activation='relu', padding='same')(input1)
在第一行中,创建了如下所示的错误。
ValueError: Input 0 is incompatible with layer conv_lst_m2d_1: expected ndim=5, found ndim=4
我想我必须编辑我的第一行get_RNN。 有谁知道如何改变这条线? 我想做一个(1,?,200,200,1)的形状,在哪里?是70岁。
答案 0 :(得分:0)
我有另一个问题。
在执行model.fit函数之前,我将输入数据和输出数据作为nparray类型。
imgs_input.shape是(1,70,200,200,1) imgs_output.shape是(1,70,200,200,1)
之后,我按照下面的代码执行了model.fit。
hist = model.fit(imgs_input, imgs_output, batch_size=16, epochs=30, verbose=2, shuffle=True, callbacks=[model_checkpoint])
而且,我的RNN网络运行了..
def get_RNN
input1 = Input((None, img_rows, img_cols, 1), name='input1') # (?,?,200,200,1)
conv1 = ConvLSTM2D(32, (3,3), activation='relu', padding='same', return_sequences=True)(input1)
如果我的代码是正确的, input1的形状将是(1,70,200,200,1)。 但我总是得到(70,1,200,200,1)的形状。
如何制作批量大小= 1而不是70?