Я сохранил модель RNN (GRU) с помощью model.save, но когда я запускаю функцию подгонки после загрузки модели, она искажает мои веса и дает неверные прогнозы. Однако я получаю правильные прогнозы, когда прогнозирую без запуска функции подгонки.
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())