in src/trainer.py [0:0]
def train(self):
for epoch in range(self.config["epochs"]):
t_start = time.time()
loss_stats = {}
for data in self.dataloader:
loss_new = self.train_iteration(data)
# logging
for k, v in loss_new.items():
loss_stats[k] = loss_stats[k]+v if k in loss_stats else v
for k in loss_stats:
loss_stats[k] /= len(self.dataloader)
self.optimizer.update_lr(loss_stats["accumulated_loss"])
t_end = time.time()
loss_str = " ".join([f"{k}:{v:.4}" for k, v in loss_stats.items()])
time_str = f"({time.strftime('%H:%M:%S', time.gmtime(t_end-t_start))})"
print(f"epoch {epoch+1} " + loss_str + " " + time_str)
# Save model
if self.config["save_frequency"] > 0 and (epoch + 1) % self.config["save_frequency"] == 0:
self.save(suffix='epoch-' + str(epoch+1))
print("Saved model")
# Save final model
self.save()