1. set model status, for example, set the model to train or eval mode
model.train()
model.eval()
2. initialize running loss
running_loss = 0.0
3. load inputs and labels from dataloader
for inputs, labels in dataloaders[phase]:
inputs, labels = Variable(inputs.cuda()), Variable(labels.cuda())
4. set the grad of optimizer to zero
optimizer.zero_grad()
5. forward propaganda and culculate loss
outputs = model(inputs)
loss = criterion(outputs, labels)
6. backward propaganda
loss.backward()
optimizer.step()
7. update the loss
running_loss += loss.item() * inputs.size(0)