我正在Jupyter实验室中使用Keras来训练模型。
我希望能够手动停止训练并优雅地退出试衣。
现在,我唯一可以终止训练的方法是通过键盘中断。
我如何使用Keras回调来优雅地终止训练——在某种程度上,我的后Keras代码也将在同一单元格内执行——通过收听KeyboardInterrupt或从小部件按钮接收事件?
或者还有别的办法吗?
谢谢!
另请参阅在Jupyter笔记本中中断keras训练是否可以保存训练?
编辑:
我试图捕获KeyboardInterrupt(即Jupyter中停止按钮发送的SIGINT(,如下所示:
try:
history=model.fit(...)
except KeyboardInterrupt:
pass
但现在我无法访问上面块之后的history
(用于绘制/持久化等(。我应该在每个(几个(epoch上使用回调来编写模型并从文件加载历史记录,还是有其他方法?
谢谢!
您可以在self.model.stop_training = True
中使用类似的东西
现在,您只需要找到一种方法来实现if
。
在这个例子中,它在一个定义的历元处停止;硬编码的";(1和3(,为了使其灵活,您可以读取一些本地txt文件的值。
这意味着,在每个批处理或每个epoch结束时,回调将读取一个txt文件,如果该文件以某种定义的字符串开头,则训练结束。
class My_Callback(keras.callbacks.Callback):
def on_epoch_begin(self, epoch, logs={}):
self.epoch = epoch
def on_batch_end(self, batch, logs={}):
if self.epoch == 1 and batch == 3:
print (f"nStopping at Epoch {self.epoch}, Batch {batch}")
self.model.stop_training = True
对不起,但现在我没有时间测试的所有内容