我正在按照这篇博客进行操作,但在实现博客中使用的保存检查点功能时遇到了问题。在第23行,它使用了:
filepath="weights-improvement-{epoch:02d}-{val_acc:.2f}.hdf5"
.
所以我尝试稍微调整代码,使其更加动态:
filepath = '{0}/checkpoints/checkpoint-{epoch:02d}-{val_loss:.2f}.hdf5'.format(directory)
.
我希望将给定架构的所有检查点存储在一个目录中,例如:./architecture1/checkpoints/
但我得到了以下错误:KeyError: 'epoch'
。这里我做错了什么?
P.S.: filepath = "./checkpoints/checkpoint-{epoch:02d}-{val_loss:.2f}.hdf5"
可以工作,但它会将所有检查点保存到一个目录中,这不是我想要的。
回答:
如果你想使用format
,正确的做法是像这样转义括号:
filepath = '{0}/checkpoints/checkpoint-{{epoch:02d}}-{{val_loss:.2f}}.hdf5'.format(directory)
所以如果directory = 'weights'
,filepath
将会是 'weights/checkpoints/checkpoint-{epoch:02d}-{val_loss:.2f}.hdf5'
。
(注意如果directory
包含{}
的话)