# Different loss values during training

**URL:** <https://discuss.huggingface.co/t/different-loss-values-during-training/55565>\
**Category:** Beginners\
**Created:** [September 19, 2023, 6:26am UTC](https://discuss.huggingface.co/t/different-loss-values-during-training/55565 "2023-09-19T06:26:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Paul1020](https://avatars.discourse-cdn.com/v4/letter/p/c37758/32.png) [@Paul1020](https://discuss.huggingface.co/u/Paul1020)\
**Post date:** [September 19, 2023, 6:26am UTC](https://discuss.huggingface.co/t/different-loss-values-during-training/55565/1 "2023-09-19T06:26:23Z")

</div>

During training I have the loss from the training itself and I have custom callback that calculates the loss every epoch. But I see the different values there:  
{‘loss’: 0.5845, ‘learning\_rate’: 9.318637274549099e-05, ‘epoch’: 3.5}  
{‘loss’: 0.5847, ‘learning\_rate’: 9.268537074148296e-05, ‘epoch’: 3.75}  
{‘loss’: 0.5779, ‘learning\_rate’: 9.218436873747496e-05, ‘epoch’: 4.0}  
{‘train\_loss’: 0.7955134510993958, ‘train\_accuracy’: 0.58578125, ← calculated by me

This is the callback that calculates the loss:

class TrainDataEvalCallback(TrainerCallback):

```
def __init__ (self, trainer) -> None:
    super(). __init__ ()
    self._trainer = trainer
    self._steps_evaluate_training = 100

def on_epoch_end(self, args, state, control, **kwargs):
    if control.should_evaluate:
        self._trainer.model.eval()
        control_copy = deepcopy(control)
        training_steps_number = self._trainer.train_dataset._steps_number
        self._trainer.train_dataset._steps_number = self._steps_evaluate_training
        self._trainer.evaluate(eval_dataset=self._trainer.train_dataset, metric_key_prefix="train")
        self._trainer.train_dataset._steps_number = training_steps_number
        self._trainer.model.train()
        return control_copy

```

Any idea why the numbers are so different ? It’s happens all over the epochs I get greater numbers somehow
