我的输入只是一个包含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)
这会引发错误:
回溯(最近一次调用最后一次):文件“first_approach.py”,第80行,在model.fit中(X_train,y_train,batch_size = 400,epochs = 20,verbose = 1)ValueError:检查模型输入时出错:expect lstm_1_input有三个尺寸,但有阵形(339732,29)
我尝试使用 X_train.reshape((1,339732, 29))
重塑我的输入,但它无法显示错误:
ValueError:检查模型输入时出错:期望lstm_1_input具有形状(无,8,29)但是具有形状的数组(1,339732,29)
如何将输入输入LSTM?
3 回答
设置
timesteps = 1
(因为,我希望每个实例有一个时间步长)并将X_train和X_test重新整形为:这有效!
对于
timesteps != 1
,您可以使用以下功能(改编自here)例子
重塑LSTM的输入: