【问题标题】:how to check shape incompatability in python如何检查python中的形状不兼容
【发布时间】:2020-12-07 09:34:09
【问题描述】:

我是 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')```

如果有帮助的话,我的变量浏览器的屏幕截图:

【问题讨论】:

    标签: python tensorflow keras deep-learning lstm


    【解决方案1】:

    如果您不想返回序列,例如(2, 173, 3),而是二维数组,例如(2, 3),和分类任务一样,需要设置

    return_sequences=False
    

    在你的 LSTM 层中。

    【讨论】:

    • 我已经进行了一些更改,但仍然出现同样的错误。我的 lstm 模型是......model = Sequential() model.add(LSTM(200, input_shape=(num_timestamps,1), return_sequences=True)) model.add(LSTM(173, activation='relu', return_sequences=True)) model.add(Dense(173, activation='relu')) model.add(Dense(1, activation='softmax')) model.compile(loss='categorical_crossentropy' ,optimizer='adam' , metrics=['accuracy']) # --- 拟合模型 history=model.fit(train_X, Y, batch_size=batch_size, validation_data=(test_X, test_Y),verbose=0)
    • ValueError: 层序 32 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,173]
    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 2022-01-03
    • 2018-01-10
    • 1970-01-01
    • 2021-05-12
    • 2021-05-29
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多