Python 继续就新数据培训LSTM模型
我是机器学习领域的新手,目前正在努力寻找如何在模型加载后继续训练。几乎找不到类似的主题,但仍然无法理解 我得到了时间序列预测的模型,并希望在出现新数据时对其进行重新训练(data_original+data_new)。问题是,如果我加载模型并想继续训练,它似乎是从零开始的。即使我使用完全相同的设置和数据(用于训练原始模型),也会发生这种情况 伪代码:Python 继续就新数据培训LSTM模型,python,keras,lstm,Python,Keras,Lstm,我是机器学习领域的新手,目前正在努力寻找如何在模型加载后继续训练。几乎找不到类似的主题,但仍然无法理解 我得到了时间序列预测的模型,并希望在出现新数据时对其进行重新训练(data_original+data_new)。问题是,如果我加载模型并想继续训练,它似乎是从零开始的。即使我使用完全相同的设置和数据(用于训练原始模型),也会发生这种情况 伪代码: def update_model(model, data, batch_size, updates): X, y = t
def update_model(model, data, batch_size, updates):
X, y = train[:, :-n_seq], train[:, -n_seq:]
X = X.reshape(X.shape[0], n_lag, n_features)
model.compile(loss='mean_squared_error', optimizer='adam')
for i in range(updates):
model.fit(X, y,epoch=1,b_size=1,verbose=0, shuffle=False)
model.reset_states()
return model
model = load_model("multivariete_model.h5")
你告诉keras每次打电话都要重新编译模型
model.compile()
每次调用update\u model
时,您都会这样做:
model.compile(loss='mean_squared_error', optimizer='adam')
删除该行,培训将从以前的状态继续进行。刚刚删除该行,并在10个时代后运行代码,对模型进行评估:原始:0.6359964006149502重新培训:0.00293751016101346:,这稍微好一点,但仍然无法解决问题。我们将在某个时候达到模型可以在给定当前参数的情况下学习。因此,除非你有另一个问题,我认为当前的行为如预期的那样。我并不真的这么认为@orsonady,我试图通过训练和重新训练几个模型来证明你的理论,但每次都是从头开始。@parsethis,我应该向加载的模型提供全部数据(上一个数据+新数据)吗?或者我应该只提供新数据吗?可能使用model.train\u on_batch()而不是再次调用fit