首页 > 解决方案 > 如何在python中检查形状不兼容

问题描述

我是 python 新手。我正在学习lstm。每当我尝试应用拟合模型时,我都会收到此错误ValueError: Shapes (2, 3) and (2, 173, 3) are incompatible

这是重现错误的代码

epochs = 60
batch_size = 2
lstm_units = 100
dense_units = 50

datafile_Xtrain = '.../train_H.csv'
dfTrX = read_csv(datafile_Xtrain, header=0)
valuesTrX = dfTrX.values
num_observationsTrX = valuesTrX.shape[0]
num_timestampsTrX = valuesTrX.shape[1]
train_X = valuesTrX.reshape((num_observationsTrX, num_timestampsTrX, 1))

# -- Input Y training  -----
datafile_Ytrain = '.../H.csv'
dfTrY = read_csv(datafile_Ytrain, header=0)
dfTrY.fillna(0)
valuesTrY = dfTrY.values
num_observationsTrY = valuesTrY.shape[0]
num_classesTrY = valuesTrY.shape[1]
train_Y = valuesTrY.reshape((num_observationsTrY, num_classesTrY))

model = Sequential()
model.add(LSTM(lstm_units, input_shape=(num_timestampsTrX,1), return_sequences=True))
model.add(Dense(dense_units, activation='relu'))
model.add(Dense(num_classesTrY , activation='softmax'))
model.compile(loss=tf.keras.losses.categorical_crossentropy, optimizer='adam', metrics=['accuracy'])

model.fit(train_X, train_Y ,epochs=epochs, batch_size=batch_size, verbose=0, validation_split=0.1,shuffle=False)
print('Model fit successfully')```

如果有帮助,我的变量资源管理器的屏幕截图: 我还添加了我的变量资源管理器的屏幕截图

标签: pythontensorflowkerasdeep-learninglstm

解决方案


如果您不想返回序列,例如(2, 173, 3),而是一个 2D 数组,例如(2, 3),就像在分类任务中一样,您需要设置

return_sequences=False

在您的 LSTM 层中。


推荐阅读