How is the training accuracy in Keras determined for every epoch?

前端 未结 1 1475
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-03 00:02

I am training a model in Keras with as follows:

model.fit(Xtrn, ytrn batch_size=16, epochs=50, verbose=1, shuffle=True,
          callbacks=[model_checkpoint         


        
相关标签:
1条回答
  • 2021-01-03 00:50

    Take a look at the BaseLogger in Keras where they're computing a running mean. For each epoch the accuracy is the average of all the batches seen before in that epoch.

    class BaseLogger(Callback):
        """Callback that accumulates epoch averages of metrics.
    
        This callback is automatically applied to every Keras model.
        """
    
        def on_epoch_begin(self, epoch, logs=None):
            self.seen = 0
            self.totals = {}
    
        def on_batch_end(self, batch, logs=None):
            logs = logs or {}
            batch_size = logs.get('size', 0)
            self.seen += batch_size
    
            for k, v in logs.items():
                if k in self.totals:
                    self.totals[k] += v * batch_size
                else:
                    self.totals[k] = v * batch_size
    
        def on_epoch_end(self, epoch, logs=None):
            if logs is not None:
                for k in self.params['metrics']:
                    if k in self.totals:
                        # Make value available to next callbacks.
                        logs[k] = self.totals[k] / self.seen
    
    0 讨论(0)
提交回复
热议问题