我有一个生成x和y的生成器,这就是我在Keras中训练LSMT模型所使用的生成器。
X的格式为[0.0,1.0,0.0004]。
我之前设置了此数据的形状:
x_out = np.array(list(x_drop.values())).reshape(len(x_drop), 1)
y_out = np.array([y])
我进入了异步生成器,因此我进入了一个同步函数,然后使用model.fit_generator():
train_gen = to_sync_generator(replay(traintime_0, traintime_1, test=0))
model = lstm_model()
model.fit_generator(
train_gen,
epochs = 5,
verbose = 1,
steps_per_epoch=500,
initial_epoch=0,
validation_data=valid_gen,
validation_steps=500)
下面是我的模型代码。
def lstm_model():
model = Sequential()
model.add(LSTM(100, input_shape=(3,1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
return model
我收到以下错误:
ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (3, 1)
请注意,我无法对此数据进行预处理。
我还没有真正看到将lstm与非预处理数据一起使用的示例,非常感谢任何建议!谢谢。
答案 0 :(得分:0)
您的数据必须是使用(x,y,z)格式的元组,其中=> x是您的批号(您最初可以从1开始),y是您的数据数组,z是您的数据形状。 根据您的情况,我可以推断出您的数据具有一项功能并包含3个步骤。因此,您可以使用以下代码进行准备:
data = data.reshape((1, 3, 1))
如果您不能直接更改数据,则可以将其合并到新数组中,然后将其放入模型中