Keras CustomCallback не распечатывает журналы ['потеря'] и не сохраняет веса в соответствии с заданным форматом - PullRequest
0 голосов
/ 05 августа 2020

Я сделал собственный обратный вызов для Keras, чтобы остановить чрезмерную подгонку, где logi c означает, что если потеря проверки текущей эпохи меньше, чем потеря проверки И потеря проверки меньше минимума потеря валидации когда-либо происходила, за исключением весов или всей модели. Я думаю, что здесь есть некоторые проблемы с функциональностью, потому что он не работает должным образом.

class StopOverFit(tf.keras.callbacks.Callback):
  '''
  A class that stops Overfitting by saving the model/weights if val_loss < loss and val_loss < min_val_loss ever encountered
  '''
    
  def __init__(self,filename,weights_only=True):
    '''
    Constructor of the Callback
    args:
        filename: {str} should in the format "Epoch: {epoch:02d}- val_loss: {val_loss:.3f}.hdf5"
        weights_only: {bool} whether to save the whole model or just the weights
    '''
    super(StopOverFit,self).__init__()
    self.filename = filename
    self.weights_only = weights_only
    self.best_min_val_loss = np.inf # "best" means without overfitting 
        
        
  def on_epoch_end(self, epoch, logs=None):
    val_loss = logs['val_loss']
    loss = logs['loss']
    
    if (val_loss<self.best_min_val_loss) and (val_loss<loss):
      print(f"best val loss improved from {self.best_min_val_loss:.4f} to {val_loss:.4f}. saving..")
      self.best_min_val_loss = val_loss
      
      if self.weights_only:
        self.model.save_weights(self.filename)
      else:
        self.model.save(self.filename)

Я инициализировал обратный вызов как

filepath="Epoch: {epoch:02d}- val_loss: {val_loss:.3f}.h5"
sof = StopOverFit(filepath)

и использовал его в обучении модели, но когда я использую это , он ничего не печатает , а веса модели, сохраненные в текущем рабочем каталоге, точно такие как Epoch: {epoch:02d}- val_loss: {val_loss:.3f}.h5.

Я хочу сохранить веса модели примерно как Epoch: 02- val_loss: 0.654.h5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...