python - 如何使用 Keras 使用批量输入进行训练,但使用 LSTM 使用单个示例进行预测?

标签 python neural-network keras lstm

我有一个我用来训练的训练数据列表。然而,当我预测时,预测将在线完成,一次只有一个例子。

如果我用如下输入声明我的模型

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/

相关文章:

python - 字符串列表,想将它们分成两个列表

python - 如何在 keras 中保存整个数据的预测值

machine-learning - 使用神经网络根据加速度计数据对人类事件进行分类

neural-network - 如何使用 PyTorch 计算输出 w.r.t. 的梯度神经网络中的输入?

python - 如何获得中间层的输出?

python - 导入 keras.datasets 不起作用

python - 在python 3中重复排序

python - 神经网络在玩具数据集上失败

Keras 自定义损失

Python 脚本不适用于双击