当前位置: 首页 > 面试题库 >

检查模型输入时发生错误:预期lstm_1_input具有3维,但数组的形状为(339732,29)

吉泰宁
2023-03-14
问题内容

我的输入只是一个具有339732行和两列的csv文件:

  • 第一个是29个特征值,即X
  • 第二个是二进制标签值,即Y

我正在尝试在堆叠的LSTM模型上训练数据:

data_dim = 29
timesteps = 8
num_classes = 2

model = Sequential()
model.add(LSTM(30, return_sequences=True,
               input_shape=(timesteps, data_dim)))  # returns a sequence of vectors of dimension 30
model.add(LSTM(30, return_sequences=True))  # returns a sequence of vectors of dimension 30
model.add(LSTM(30))  # return a single vector of dimension 30
model.add(Dense(1, activation='softmax'))

model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

model.summary()
model.fit(X_train, y_train, batch_size = 400, epochs = 20, verbose = 1)

这将引发错误:

追溯(最近一次调用为最新一次):在model.fit(X_train,y_train,batch_size = 400,epochs =
20,verbose = 1)中,文件“ first_approach.py​​”,第80行

ValueError:检查模型输入时出错:预期lstm_1_input具有3个维,但数组的形状为(339732,29)

我尝试使用重塑输入,X_train.reshape((1,339732, 29))但是显示错误却不起作用:

ValueError:检查模型输入时出错:预期lstm_1_input具有形状(None,8,29),但具有形状为(1,339732,29)的数组

如何将我的输入输入LSTM?


问题答案:

设置timesteps = 1(因为我想要每个实例一个时间步长),并将X_train和X_test重塑为:

import numpy as np
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))

这工作了!



 类似资料: