2016-11-23 2 views
3

I отделка модель тренировка обработка. Во время обучения я использовал ModelCheckpint для сохранения веса лучшей модели с помощью:keras: загрузить сохраненную модель весов в модели для оценки

checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, 
         save_best_only=True, mode='max') 

После тренировки я загрузить модели весов в к модели для оценки, но я обнаружил, что модель не дает лучшую точность наблюдаемой во время обучения. Я перезагрузить модель следующим образом:

model.load_weights(filepath) #load saved weights 
model = Sequential() 
model.add(Convolution2D(32, 7, 7, input_shape=(3, 128, 128))) 
.... 
.... 
model.compile(loss='categorical_crossentropy', 
      optimizer=sgd, 
      metrics=['accuracy']) 

#evaluate the model 
scores = model.evaluate_generator(test_generator,val_samples) 
print("Accuracy = ", scores[1]) 

Самая высокая точность спасена Modelcheckpoint составляет около 85%, но перекомпилировано модель дает только точность 16%?

Есть ли что-то не так, что я делаю?

Чтобы быть в безопасности, есть ли способ напрямую сохранить лучшую модель, а не вес модели?

ответ

0

Ввод модели.load_weights (путь к файлу) после компиляции модели устраняет проблему !!

Но я все еще интересно, о сохранении оптимальной модели во время тренировки

+0

Что вы подразумеваете под словом сохранения лучшей модели во время обучения? Модель не меняется во время обучения |: любой способ, если вы хотите это сделать ... вы можете использовать флаг save_weights_only = False, и он сохранит модель каждой эпохи ... Вы напомнили мне о вопросе, который я задал: https://stackoverflow.com/questions/48139494/tensorflow-keras-modelcheckpoint-saving-model-while-training-why –

0

Два советов для убедившись, что вы используете лучшие модели обученные:

Добавьте val_acc к имени файла

You может создать свой ModelCheckpoint так:

checkpoint = ModelCheckpoint('my-model-{val_acc:.2f}.hdf5', monitor='val_acc', verbose=1, 
        save_best_only=True, mode='max') 

Таким образом, вы будете иметь несколько файлов, и вы сможете убедиться, что вы р ick лучшая модель.

Прочитайте учебный выход

Когда вы смотрите на выходе Keras при монтаже, вы увидите:

Epoch 000XX: val_acc improved from 0.8 to 0.85, saving model to my-model-0.85.hdf5 
0

Допустим, у вас есть куча данных, которые вы тренируете и вы решите сохранить весы только для своей лучшей итерации. Теперь, если вы не повторили все свои данные до того, как найдете свои «лучшие» весовые коэффициенты модели, вы будете эффективно выбрасывать данные, и любая последующая оценка с использованием так называемых лучших весов не будет коррелировать с вашей оценкой в ​​партии.

Смежные вопросы