我有一个我用来训练的训练数据列表。然而,当我预测时,预测将在线完成,一次只有一个例子。
如果我用如下输入声明我的模型
model = Sequential()
model.add(Dense(64, batch_input_shape=(100, 5, 1), activation='tanh'))
model.add(LSTM(32, stateful=True))
model.add(Dense(1, activation='linear'))
optimizer = SGD(lr=0.0005)
model.compile(loss='mean_squared_error', optimizer=optimizer)
当我用形状 (1, 5, 1) 的单个示例进行预测时,它给出了以下错误。
ValueError: Shape mismatch: x has 100 rows but z has 1 rows
我想出的解决方案是使用 (1,5,1) 的 batch_input_shape 迭代训练我的模型,并为每个示例调用 fit。这非常慢。
有没有办法在大批量上进行训练,而是使用 LSTM 通过单个示例进行预测?
感谢您的帮助。
最佳答案
尝试这样的事情:
model2 = Sequential()
model2.add(Dense(64, batch_input_shape=(1, 5, 1), activation='tanh'))
model2.add(LSTM(32, stateful=True))
model2.add(Dense(1, activation='linear'))
optimizer2 = SGD(lr=0.0005)
model2.compile(loss='mean_squared_error', optimizer=optimizer)
for nb, layer in enumerate(model.layers):
model2.layers[nb].set_weights(layer.get_weights())
您只是将权重从一个模型重写到另一个模型。
关于python - 如何使用 Keras 使用批量输入进行训练,但使用 LSTM 使用单个示例进行预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43359252/