我当前将save_best_only
与ModelCheckPoint
一起使用:
ModelCheckpoint(create_save_path(), monitor='val_acc', verbose=2,
save_best_only=True, save_weights_only=False,
mode='auto', period=1)
但是,如果我加载不同的模型或什至是相同的模型,则该模型无权访问先前的训练val_acc并从头开始save_best_only进程。
由于我将训练不同的模型,所以我只想对值进行硬编码,以便仅在超过该值时才保存。
是否可以使用ModelCheckPoint做到这一点?
答案 0 :(得分:0)
IIUC,您已经训练了一个模型,其精确度等于特定值,例如:30%。重新加载和训练该模型时,它将保存精度低于30%的模型,并且您不希望发生这种情况。
我检查了keras的源代码,发现ModelCheckpoint
有一个名为best
的属性,可以作为基准。
if mode == 'min':
self.monitor_op = np.less
self.best = np.Inf
elif mode == 'max':
self.monitor_op = np.greater
self.best = -np.Inf
else:
if 'acc' in self.monitor or self.monitor.startswith('fmeasure'):
self.monitor_op = np.greater
self.best = -np.Inf
else:
self.monitor_op = np.less
self.best = np.Inf
但是其初始化程序不接受此参数:
def __init__(self, filepath, monitor='val_loss', verbose=0,
save_best_only=False, save_weights_only=False,
mode='auto', period=1):
因此,您可以在创建ModelCheckpoint
对象之后手动进行设置,如下所示:
mcp = ModelCheckpoint(create_save_path(), monitor='val_acc', verbose=2,
save_best_only=True, save_weights_only=False,
mode='auto', period=1)
mcp.best = 0.3