我使用model.save保存了一个RNN(GRU)模型但是当我在加载模型后运行fit函数时,它会弄乱我的权重并给出不正确的预测。但是,当我在不运行拟合函数的情况下进行预测时,我得到了正确的预测。
opt = Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, decay=0.01)
rnn_model.compile(loss='binary_crossentropy', optimizer=opt, metrics=["accuracy"])
rnn_model.save('./models/my_model.h5')
#This predicts correctly
model = load_model('my_model.h5')
model.predict(x)
#This does NOT predict correctly
model=load_model('my_model.h5')
model.fit(X, Y, batch_size = 5, epochs=1)
model.predict(x)
更新(找到解决方法): 我还没弄清楚问题的根源。但似乎我加载的模型保存在Keras 2.0.6上,我将它加载到Keras 2.1.5上。使用“save_weights”和“load_weights”函数的东西不起作用,所以我不得不在我从头开始手动构建的体系结构上逐层加载权重(使用json从保存的模型中加载体系结构):
for layer_loaded, layer_built in zip(loaded_model,built_model):
layer_built.set_weights(layer_loaded.get_weights())
答案 0 :(得分:0)
它看起来很像优化程序的问题。例如,如果学习率未正确保存为该值,则会在上次训练时结束,然后以更大的值重新开始。在这种情况下,跑步时可能会导致体重增加。