Керас: Невозможно продолжить обучение загруженной модели
Я сохранил модель 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())
1 ответ
Это очень похоже на проблему с оптимизатором. Например, если скорость обучения не сохранена должным образом в значении, которое она закончила во время последней тренировки, и она инициируется снова с большим значением. В этом случае это может привести к путанице весов, когда вы работаете в форме.