Keras: невозможно продолжить обучение загруженной модели

Я сохранил модель 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())


person JSRambal    schedule 20.03.2018    source источник
comment
Попробуйте снова запустить model.compile после загрузки модели.   -  person Mohamed Elzarei    schedule 20.03.2018
comment
@MohamedElzarei Я пытаюсь избежать этого, потому что не хочу менять параметры оптимизатора, такие как скорость обучения (которая отличается от начальной скорости обучения из-за распада).   -  person JSRambal    schedule 20.03.2018
comment
Возможный дубликат Загрузка обученной модели Keras и продолжение обучения   -  person Mohamed Elzarei    schedule 20.03.2018
comment
@MohamedElzarei Извините, я не понимаю - какое из решений применимо к моему?   -  person JSRambal    schedule 20.03.2018
comment
@MohamedElzarei Я попробовал решение с использованием обратных вызовов, но это не сработало ... Я так запутался.   -  person JSRambal    schedule 20.03.2018


Ответы (1)


Очень похоже на проблему с оптимизатором. Например, если скорость обучения не сохраняется должным образом на значении, которое было во время последней тренировки, и она снова инициируется с большим значением. В этом случае это может привести к тому, что вы перепутаете веса, когда будете бегать в хорошей форме.

person Andrey Kite Gorin    schedule 05.07.2018