希望有人能解答下面的错误代码,我正在进行监督机器学习,并遇到了一个错误。
我的库详情(由于许多开发者建议降级版本可能会解决问题,我已经将上述两个包降级到当前版本,但在我这里仍然不起作用):
- Numpy : 1.18.5 当前版本(之前是 1.20.3)
- TensorFlow : 2.5.0 当前版本(之前是 2.4.1)
- Python : 3.8.8
- Keras : 2.4.3
这是代码:
# 定义要拟合的 LSTM 模型model = Sequential()model.add(LSTM(85, input_shape=(1, 53)))model.add(Dense(1))model.compile(loss='mae', optimizer='adam')# 拟合模型history = model.fit(train_X, train_y, epochs=70, batch_size=175, validation_data=(test_X, test_y), verbose=2, shuffle=False)# 绘制训练进展pyplot.plot(history.history['loss'], label='train')pyplot.plot(history.history['val_loss'], label='test')pyplot.legend()pyplot.show()
这是错误信息:
NotImplementedError Traceback (most recent call last)<ipython-input-10-251aaaf9021e> in <module> 1 # 定义要拟合的 LSTM 模型 2 model = Sequential()----> 3 model.add(LSTM(85, input_shape=(train_X.shape[1], train_X.shape[2]))) 4 model.add(Dense(1)) 5 model.compile(loss='mae', optimizer='adam') NotImplementedError: Cannot convert a symbolic Tensor (lstm_2/strided_slice:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported
回答:
在添加 LSTM 模型时发现问题,依赖于层输入形状不合适,因此更改形状为
model = Sequential()model.add(LSTM(85, input_shape=(train_X.shape[1], train_X.shape[2])))model.add(Dense(1))model.compile(loss='mae', optimizer='adam')# 拟合模型history = model.fit(train_X, train_y, epochs=70, batch_size=175, validation_data=(test_X, test_y), verbose=2, shuffle=False)# 绘制训练进展pyplot.plot(history.history['loss'], label='train')pyplot.plot(history.history['val_loss'], label='test')pyplot.legend()pyplot.show()