MCPcopy Index your code
hub / github.com/ActiveVisionLab/DFNet / EarlyStopping

Class EarlyStopping

script/dm/callbacks.py:20–106  ·  view source on GitHub ↗

Early stops the training if validation loss doesn't improve after a given patience.

Source from the content-addressed store, hash-verified

18 def on_step_end(self): pass
19
20class EarlyStopping:
21 """Early stops the training if validation loss doesn't improve after a given patience."""
22 # source https://blog.csdn.net/qq_37430422/article/details/103638681
23 def __init__(self, args, patience=50, verbose=False, delta=0):
24 """
25 Args:
26 patience (int): How long to wait after last time validation loss improved.
27 Default: 50
28 verbose (bool): If True, prints a message for each validation loss improvement.
29 Default: False
30 delta (float): Minimum change in the monitored quantity to qualify as an improvement.
31 Default: 0
32 """
33 self.val_on_psnr = args.val_on_psnr
34 self.patience = patience
35 self.verbose = verbose
36 self.counter = 0
37 self.best_score = None
38 self.early_stop = False
39 self.val_loss_min = np.Inf
40 self.delta = delta
41
42 self.basedir = args.basedir
43 self.model_name = args.model_name
44
45 self.out_folder = os.path.join(self.basedir, self.model_name)
46 self.ckpt_save_path = os.path.join(self.out_folder, 'checkpoint.pt')
47 if not os.path.isdir(self.out_folder):
48 os.mkdir(self.out_folder)
49
50 def __call__(self, val_loss, model, epoch=-1, save_multiple=False, save_all=False, val_psnr=None):
51
52 # find maximum psnr
53 if self.val_on_psnr:
54 score = val_psnr
55 if self.best_score is None:
56 self.best_score = score
57 self.save_checkpoint(val_psnr, model, epoch=epoch, save_multiple=save_multiple)
58 elif score < self.best_score + self.delta:
59 self.counter += 1
60
61 if self.counter >= self.patience:
62 self.early_stop = True
63
64 if save_all: # save all ckpt
65 self.save_checkpoint(val_psnr, model, epoch=epoch, save_multiple=True, update_best=False)
66 else: # save best ckpt only
67 self.best_score = score
68 self.save_checkpoint(val_psnr, model, epoch=epoch, save_multiple=save_multiple)
69 self.counter = 0
70
71 # find minimum loss
72 else:
73 score = -val_loss
74 if self.best_score is None:
75 self.best_score = score
76 self.save_checkpoint(val_loss, model, epoch=epoch, save_multiple=save_multiple)
77 elif score < self.best_score + self.delta:

Callers 2

trainFunction · 0.90
train_featureFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected