Keras 具有连续时代的早期顶起角砾岩

Keras 具有连续时代的早期顶起角砾岩,keras,Keras,我过去常常在克拉斯早早地停下来 提前停止=kr.callbacks.earlystoping(监视器='val\u loss', 耐心=10,详细=1,模式=自动) 然而,我得到的结果如下: 第2个历元的val_损失为0.6683,第3个历元的val>0.6683,但训练开始起作用,val从第3个历元开始下降。当我将耐心设置为10时,我希望训练将以连续10个历次停止,没有任何改进,而不仅仅是像那样比较历次2和历次12。有人知道怎么解决这个问题吗?谢谢。我修复了,刚刚修改了keras.callb

我过去常常在克拉斯早早地停下来 提前停止=kr.callbacks.earlystoping(监视器='val\u loss', 耐心=10,详细=1,模式=自动) 然而,我得到的结果如下:


第2个历元的val_损失为0.6683,第3个历元的val>0.6683,但训练开始起作用,val从第3个历元开始下降。当我将耐心设置为10时,我希望训练将以连续10个历次停止,没有任何改进,而不仅仅是像那样比较历次2和历次12。有人知道怎么解决这个问题吗?谢谢。

我修复了,刚刚修改了keras.callbacks.earlystoping:

取代

def on_epoch_end(self、epoch、logs=None):
...
如果self.monitor_op(当前-self.min_delta,self.best):
self.best=当前
self.wait=0
其他:
self.wait+=1
如果self.wait>=self.patience:
self.stopped\u epoch=epoch
self.model.stop\u training=True
...

def on_epoch_end(self、epoch、logs=None):
...
如果epoch==1:
self.previous=logs.get(self.monitor)
#如果val_电流损耗<先前值,则设置wait=0
#如果self.monitor_op(当前-self.min_delta,self.best):
如果self.monitor_op(当前-self.min_delta,self.previous):
#如果当前previous,则表示性能暂停改善,然后将wait+=1
self.wait+=1
打印'now:'+str(当前)+',pre:'+str(self.previous)+'未改进!等待:'+str(self.wait)
如果self.wait>=self.patience:#如果等待达到限制,则停止训练
self.stopped\u epoch=epoch
self.model.stop\u training=True
如果历元>1:
self.previous=logs.get(self.monitor)
...

您可以根据需要编写自己的回调。在您的案例中,您想要做的是编辑EARLYSTONG的Keras版本中的
on\u epoch\u end()
方法。与其跟踪最佳值,不如跟踪上一个值,看看它是否连续10次没有改善

我修正了,只是修改了keras的最早部分: