keras的ModelCheckpoint保存最佳epoch准确率

今天下午捣鼓一下午捣鼓得头疼,然后睡了一觉再弄弄弄出来了。可能是现在版本更新太快,网上有些东西少有人写或者没有人写。

刚开始调用checkpoint根本没有覆盖也没有执行,跟摆在那好看似的。后来改了一下filepath
filepath="model_{epoch:02d}-{val_acc:.2f}.hdf5"
好家伙开始报错了,val_acc报错,一搜网上说让把val_acc改成accuracy
然后还不对,我以为是其它加的地方有什么问题,整了半天发现现在版本不叫accuracy了,而是叫val_accuracy

贴代码:

save_dir = os.path.join(os.getcwd(), 'saved_models')
model_name = 'keras_cifar10_trained_model.h5'
filepath="model_{epoch:02d}-{val_accuracy:.2f}.hdf5"
checkpoint = ModelCheckpoint(os.path.join(save_dir, filepath), monitor='val_accuracy',verbose=1, save_best_only=True)

history = model.fit(x_train, y_train,batch_size=32, epochs=200, validation_data=(x_test, y_test), shuffle=False, callbacks=[checkpoint])

print(history.history.keys())
# Save model and weights
if not os.path.isdir(save_dir):
    os.makedirs(save_dir)
model_path = os.path.join(save_dir, model_name)
model.save(model_path)
print('Saved trained model at %s ' % model_path)

加载模型还是 model.load_weights("./saved_models/model_47-0.90.hdf5")就可以了

emm还遇到了一个问题,因为解决了忘了具体是什么了,跟底下这个差不多,反正就是h5py有问题

File “h5py_objects.pyx”, line 54, in h5py._objects.with_phil.wrapper (C:\Minonda\conda-bld\h5py_1496885653697\work\h5py_objects.c:2867)
File “h5py_objects.pyx”, line 55, in h5py._objects.with_phil.wrapper (C:\Minonda\conda-bld\h5py_1496885653697\work\h5py_objects.c:2825)
File “h5py\h5f.pyx”, line 78, in h5py.h5f.open (C:\Minonda\conda-bld\h5py_1496885653697\work\h5py\h5f.c:2140)
OSError: Unable to open file (File signature not found)

然后搜了下说重装h5py这个包阔以,然后装了一下也没解决问题,仍然报错。后来发现是我受欠给自动保存模型的文件改了个名,
人家自动命的原名是
keras的ModelCheckpoint保存最佳epoch准确率
然后我给改了个其他名,然后头疼了我一下午emm
把名字改回去就可以了,具体为什么我也不知道。。。

而且这个问题是我过了几天重跑解决的,有可能不是这么解决的,可能它过了几天自动好了??这个错误本身出现得就很猝不及防,跑了六七遍都没什么问题,代码没改再跑一遍就出这个问题了。我也忘了我什么时候手欠改掉文件名的了qaq
如果有遇到同样问题的朋友可以注意一下。然后我当时在anaconda卸了重装h5py的时候,不知道怎么它把keras一起卸掉了emm 小心一点,虽然可以再装回来

上一篇:Batch、Epoch和Iteration的理解


下一篇:pytorch之inception_v3的实现案例