in experiments/grasp_stability/train.py [0:0]
def train(self, nbEpoch=10):
lossTrainList = []
accTestList = []
nbatch = len(self.trainLoader)
# self.evaluation()
# accTestList.append(0.6)
for epoch in range(nbEpoch): # loop over the dataset multiple times
running_loss = 0.0
print("")
st = time.time()
self.model.train()
for i, data in enumerate(self.trainLoader):
x = {}
for k in self.fields:
x[k] = data[k].to(self.device)
label = data["label"].to(self.device)
# zero the parameter gradients
self.optimizer.zero_grad()
outputs = self.model(x)
loss = self.criterion(outputs, label)
loss.backward()
self.optimizer.step()
percent = 20 * i // nbatch
progressBar = "#" * percent + "." * (20 - percent)
passedTime = time.time() - st
eta = passedTime / (i + 1) * (nbatch - i)
print(
"\r%s [%d, %5d] loss: %.6f elapse: %.2fs eta: %.2fs"
% (
progressBar,
epoch + 1,
i + 1,
running_loss / 2000,
passedTime,
eta,
),
end=" ",
)
# print statistics
lossTrainList.append(loss.item())
running_loss = (running_loss * i + loss.item()) / (i + 1)
# if i % 10 == 9: # print every 2000 mini-batches
# print(
# "[%d, %5d] loss: %.6f" % (epoch + 1, i + 1, running_loss / 2000)
# )
# running_loss = 0.0
accTest = self.evaluation()
accTestList.append(accTest)
print(accTest, end=" ")
return lossTrainList, accTestList