@albanD Yes, the training set is split in multiple batches, each batch the following code is run:
data = data.to(self.device)
out = self.network(data)
loss = self.loss(out, target) / self.batch_subdivisions
loss.backward()

We retrain for 1 epoch (around 166 batches).