在Jupyter笔记本中,如何使用回调和/或小部件事件手动终止Keras训练



我正在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

对不起,但现在我没有时间测试的所有内容

相关内容

最新更新