Весовые нагрузки после тренировочного заезда в KERAS не учитывают наивысший уровень точности, достигнутый в предыдущем заезде - PullRequest
0 голосов
/ 01 ноября 2018

Я провожу тренировочный заезд и заканчиваю следующим выводом из модели KERAS NN. Я добавил вывод матрицы путаницы для качества модели

...

Эпоха 09998: val_acc не улучшился с 0.83780 Эпоха 9999/10000 12232/12232 [====================================] - 1с 49us / шаг - потеря: 0,2656 - согласно: 0,9133 - val_loss : 0,6134 - val_acc: 0,8051

Эпоха 09999: val_acc не улучшился с 0.83780 Эпоха 10000/10000 12232/12232 [====================================] - 1 с 48us / шаг - потеря: 0,2655 - согласно: 0,9124 - val_loss : 0,5918 - val_acc: 0,8283

Эпоха 10000: val_acc не улучшился с 0.83780 3058/3058 [==============================] - 0s 46us / step

в соотв. 82,83% Качество модели Tn: 806 Tp: 1727 Fp: 262 Fn: 263 Точность: 0,8683 Напомним: 0,8678 Точность 0,8283 F, оценка 0,8681

Затем я изменяю гиперпараметр, перезагружаю все и перекомпилирую, используя следующий код

# prep checkpointing
model_file = output_file.rsplit('.',1)[0] + '_model.h5'
checkpoint = ModelCheckpoint(model_file, monitor='val_acc', verbose=1, 
                             save_best_only=True, save_weights_only=True, mode='max')
callbacks_list = [checkpoint]
model.load_weights(model_file) # - commented out first time thru, reload second time thru

adam = optimizers.Adam(lr=l_rate, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy'])


model.fit(X_train, Y_train, validation_data=(model_test_X, model_test_y),
          batch_size = batch_s, epochs=num_epochs, 
          callbacks=callbacks_list, verbose=1)

После перезапуска я бы ожидал, что лучшая точность будет такой, как была выше. В этом случае val_acc = 0,83780

Однако, после первых двух эпох, я получаю такой вывод:

Эпоха 1/10000 12232/12232 [====================================] - 1 с 99us / шаг - потеря: 0,2747 - согласно: 0,9097 - val_loss : 0,6191 - val_acc: 0,8143

Epoch 00001: val_acc улучшен с -inf до 0.81426, сохраняя модель в Data_model.h5

Эпоха 2/10000 12232/12232 [====================================] - 1с 42us / шаг - потеря: 0,2591 - согласно: 0,9168 - val_loss : 0,6367 - val_acc: 0,8322

Epoch 00002: val_acc улучшен с 0,81426 до 0,83224, сохраняя модель в Data_model.h5

Эпоха 3/10000 12232/12232 [====================================] - 1с 44us / шаг - потеря: 0.2699 - согласно: 0.9140 - val_loss : 0,6157 - val_acc: 0,8313

Эпоха 00003: val_acc не улучшился с 0.83224 ......

Хотя я понимаю, что модель может начинаться с другого места, я предполагал, что наилучший уровень точности (val_acc) был бы перенесен с предыдущего запуска.

Мой вопрос: я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...