我正在尝试在一系列尺寸为(9219,7,7,12)的图像上运行 CNN-LSTM 模型,但在拟合模型中出现以下错误

问题描述 投票:0回答:1
model = Sequential()
model.add(Conv1D(32, 4, activation='relu', padding='same', input_shape=(train_x.shape[1], train_x.shape[2] * train_x.shape[3])))
model.add(LSTM(32, return_sequences=True))
model.add(MaxPooling1D(2))
model.add(Conv1D(16, 8, activation="relu", padding='same'))
model.add(LSTM(64, return_sequences=True))
model.add(MaxPooling1D(2))
model.add(Conv1D(16, 8, activation="relu", padding='same'))
model.add(LSTM(128))
model.add(Dense(3, activation='sigmoid'))

from keras.optimizers import Adam

# change the optimizer,loss function
# and metrics according to your need

model.compile(optimizer=Adam(learning_rate=0.001),
              loss='binary_crossentropy',
              metrics=['accuracy'])
print(model.summary())
model.fit(train_x.shape[1], train_y, epochs=20)

我收到此错误

ValueError Traceback(最近一次调用最后一次) 在 () 中 ----> 1 model.fit(train_x, train_y, epochs=20)

1 帧 tf__train_function(迭代器)中的/usr/local/lib/python3.10/dist-packages/keras/engine/training.py 13 尝试: 14 do_return =真 ---> 15 retval_ = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(iterator)), None, fscope) 16 除外: 17 do_return = 假

值错误:在用户代码中:

File "/usr/local/lib/python3.10/dist-packages/keras/engine/training.py", line 1284, in train_function  *
    return step_function(self, iterator)
File "/usr/local/lib/python3.10/dist-packages/keras/engine/training.py", line 1268, in step_function  **
    outputs = model.distribute_strategy.run(run_step, args=(data,))
File "/usr/local/lib/python3.10/dist-packages/keras/engine/training.py", line 1249, in run_step  **
    outputs = model.train_step(data)
File "/usr/local/lib/python3.10/dist-packages/keras/engine/training.py", line 1050, in train_step
    y_pred = self(x, training=True)
File "/usr/local/lib/python3.10/dist-packages/keras/utils/traceback_utils.py", line 70, in error_handler
    raise e.with_traceback(filtered_tb) from None
File "/usr/local/lib/python3.10/dist-packages/keras/engine/input_spec.py", line 298, in assert_input_compatibility
    raise ValueError(

ValueError: Input 0 of layer "sequential_2" is incompatible with the layer: expected shape=(None, 7, 84), found shape=(None, 7, 7, 12)
python deep-learning lstm
1个回答
0
投票

问题来了:

正如您所提到的,您有一个形状为

(9219, 7, 7, 12)
的数据集。值 9219 代表批量大小,从现在开始,我将使用 None 来表示它。

因此,模型的输入数据形状应该是

(None, 7, 7, 12)
。但是,在以下代码行中:

model.add(Conv1D(32, 4, activation='relu', padding='same', 
    input_shape=(train_x.shape[1], train_x.shape[2] * train_x.shape[3])))

您已将模型的输入形状定义为

(None, 7, 84)
,这是不兼容的并会导致异常。

相反,您应该使用以下内容(我相信您的代码中存在拼写错误):

model.add(Conv1D(32, 4, activation='relu', padding='same', 
    input_shape=(train_x.shape[1], train_x.shape[2], train_x.shape[3])))
© www.soinside.com 2019 - 2024. All rights reserved.