1. 核心目的
- 當模型在驗證集上的性能不再提升時,提前終止訓練
- 防止過擬合,節省計算資源
2. 實現方法
監控驗證集指標(如損失、準確率),設置耐心值(Patience)
3. 代碼:
class EarlyStopping:def __init__(self,patience =10,delta=0):"""Early stoppingArgs:patience: int, number of epochs to wait before stoppingdelta: float, the minimum improvements"""self.patience = patienceself.delta = deltaself.counter =0 self.early_stop = Falseself.best_loss = float('inf')def __call__(self, val_loss):if val_loss < self.best_loss - self.delta:self.best_loss = val_lossself.counter =0 else:self.counter+=1if self.counter >= self.patience:self.early_stop = True
解釋__call__
方法的作用
在 Python 中,當一個類定義了 __call__
方法時,這個類的實例就可以被當作函數來調用。例如:
early_stopper = EarlyStopping(patience=3) # 創建實例
early_stopper(val_loss=0.5) # 調用實例,實際執行 __call__ 方法