gpt4 book ai didi

python - Keras LSTM 保存后继续训练

转载 作者:行者123 更新时间:2023-11-28 18:12:44 24 4
gpt4 key购买 nike

我正在研究 LSTM 模型,我想保存它并在以后继续处理它积累的额外数据。我的问题是,保存模型并在下次运行脚本时再次加载它后,预测完全错误,它只是模仿了我输入的数据。

这是模型初始化:

# create and fit the LSTM network
if retrain == 1:
print "Creating a newly retrained network."
model = Sequential()
model.add(LSTM(inputDimension, input_shape=(1, inputDimension)))
model.add(Dense(inputDimension, activation='relu'))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=epochs, batch_size=batch_size, verbose=2)
model.save("model.{}.h5".format(interval))
else:
print "Using an existing network."
model = load_model("model.{}.h5".format(interval))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=epochs, batch_size=batch_size, verbose=2)
model.save("model.{}.h5".format(interval))
del model
model = load_model("model.{}.h5".format(interval))
model.compile(loss='mean_squared_error', optimizer='adam')

第一个数据集,当 retrain 设置为 1 时,大约有 10000 个条目,大约 3k 个时期和 5% 的批量大小。第二个数据集是单项数据。就像在一行中一样,又是 3k 个时期和 batch_size=1

已解决

我错误地重新加载了定标器:

scaler = joblib.load('scaler.{}.data'.format(interval))
dataset = scaler.fit_transform(dataset)

正确:

scaler = joblib.load('scaler.{}.data'.format(interval))
dataset = scaler.transform(dataset)

fit_transform 重新计算缩放值的乘数,这意味着原始数据会有偏移量。

最佳答案

来自函数keras model api对于 model.fit():

initial_epoch: Integer. Epoch at which to start training (useful for resuming a previous training run).

设置此参数可能会解决您的问题。

我认为问题的根源是来自 adam 的自适应学习率。在训练期间,为了对模型进行更多微调,学习率会自然下降。当您仅使用一个样本重新训练您的模型时,权重更新太大(因为重新设置了学习率),这可能会完全破坏您之前的权重。

如果 initial_epoch 不好,则尝试以较低的学习率开始第二次训练。

关于python - Keras LSTM 保存后继续训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50253014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com