我进行了一次训练,并完成了KERAS NN模型的以下输出。我添加了混淆矩阵输出以提高模型质量
...
Epoch 09998:val_acc从0.83780没有改善 时代9999/10000 12232/12232 [==============================]-1s 49us / step-损耗:0.2656-acc:0.9133-val_loss :0.6134-val_acc:0.8051
Epoch 09999:val_acc从0.83780没有改善 时代10000/10000 12232/12232 [==============================]-1s 48us / step-损耗:0.2655-acc:0.9124-val_loss :0.5918-val_acc:0.8283
Epoch 10000:val_acc从0.83780没有改善 3058/3058 [==============================]-0s 46us / step
acc: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 [==============================]-1s 99us / step-损耗:0.2747-acc:0.9097-val_loss :0.6191-val_acc:0.8143
Epoch 00001:val_acc从-inf改进到0.81426,将模型保存到Data_model.h5
史诗2/10000 12232/12232 [==============================]-1s 42us / step-损耗:0.2591-acc: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 [==============================]-1s 44us / step-损耗:0.2699-acc:0.9140-val_loss :0.6157-val_acc:0.8313
Epoch 00003:val_acc从0.83224没有改善 ......
虽然我知道模型可能从其他地方开始,但我的假设是,最佳精度(val_acc)应该从上一次运行中继承下来。
我的问题是我缺少什么吗?