Керас загруженная модель не имеет одинаковую точность - PullRequest
0 голосов
/ 19 апреля 2020

Я сохраняю свою модель с контрольной точкой,

checkpoint = ModelCheckpoint("Models/FVA_MEL.h5", monitor='val_accuracy', verbose=1, save_best_only=True, mode='max', period=1)

Я загружаю свою модель с load_model с

from keras.models import load_model,save_model modell = load_model("Models/FVA_MEL.h5")

Но загруженная модель не имеет той же точности с теми же данными испытаний я попытался сохранить как .tf, но это не сработало. Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 19 апреля 2020

Сначала проверьте документацию Keras: https://keras.io/callbacks/

Возможно, существует несоответствие между "save_best_only = True" и весами для последней эпохи. Вы должны использовать веса для последней эпохи вместо лучшей.

Скелет (см. Ниже раздел за разделом):

#{model}
{model = Sequential()}
{Your model}

#{model.comply}
#{model.compile()}
#{model.fit()}
#{model.save('your_name.h5')}

Мой пример ниже:

# model
input_shape=(100,50,layers)
model = Sequential()
activation = 'relu'
model.add(Conv2D(filters=16, kernel_size=(3,3),data_format='channels_last', input_shape=input_shape, padding='same', activation=activation))
model.add(Flatten())
model.add(Dense(256, activation=activation))
model.add(Dropout(0.2))
model.add(Dense(n_levels, activation='softmax'))
# model.save() # if you want to save model structure only (no weights)

# or (if you have saved model in JSON)
#with open(os.path.join(models_wd,model_name), 'r') as model_file:
#    model = model_from_json(model_file.read())
#    model_file.close()

#{model.compile}
adam = optimizers.Adam()
early_stopping = EarlyStopping(monitor='val_loss', min_delta=0.001, patience=12, verbose=1, mode='auto', baseline=None, restore_best_weights=False)
learning_rate_reduction = ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=5, verbose=1, mode='auto', cooldown=0, min_lr=0.00001)
model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer=adam)
#{model.summary}
model.summary()
#{model.fit}
history = model.fit(xtr, ytr, batch_size=8, epochs=n_epochs, verbose=2, validation_data=(xest,yest), callbacks=[learning_rate_reduction, early_stopping])

#{model.save('your_name.h5')}               
model.save('your_name.h5')

Тогда в файле your_name.h5 вы получите те же веса, что и в прошлую эпоху, что даст вам тот же результат после загрузки модели.

...