首页 > 解决方案 > ValueError:输入 0 与层 lstm_60 不兼容:预期 ndim=3,发现 ndim=2

问题描述

我想在我的x_trainshape(318,39)y_trainhas shape建立一个深度 RNN (318,)。当我执行下面的代码时:

model.add(LSTM(20,input_shape=(X_train.shape[1:]), activation='relu', return_sequences=True))
model.add(LSTM(20, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])
history = model.fit(X_train,y_train,batch_size=20,epochs=250)

我收到以下错误:

ValueError: Input 0 is incompatible with layer lstm_60: expected ndim=3, found ndim=2

标签: tensorflowkerasdeep-learninglstmrecurrent-neural-network

解决方案


由于您使用的是LSTM,我假设您的输入数据是连续的,即您有 318 个示例,其中每个示例有 39 个时间步长?如果是这种情况,您应该首先正确地重塑您的输入数据,例如:

import numpy as np
X_train = np.expand_dims(X_train, -1) 

这会将您的 X_train 重塑为形状,(318, 39, 1)然后它将起作用(仅当我的初始假设正确时)


推荐阅读