1.在前三部分已经分别完成了数据的处理、神经网络的定义,还有优化器、损失函数的选择,这次我们将开始学习如何训练模型。
2.模型的训练其实也是套路,大致分为一下五个部分。
1)加载trainloader中的数据,并将其转换为Variable 形式的数据,作为神经网络的输入。
2)每次循环开始之前,确保梯度的值为0. optimizer.zero_grad()
3)前向传播。也就是将数据feed进入网络net()。 outputs=net(inputs)
4)反向传播。loss.backward()实现后传。 loss=criterion(outputs,labels) loss.backward()
5)更新参数的值。optimizer.step()
每一次循环都重复这5步。
3.code实现 把之前的代码也融合进来了
import torch
import torch.nn as nn
import torchvision
import torchvision.transforms as transforms
import torch.nn.functional as F
import torch.optim as optim
from torch.utils.data import DataLoader
from torch.autograd import Variable
import os
os.environ["CUDA_VISIBLE_DEVICES"]="2"
transform=transforms.Compose(
[transforms.ToTensor(),transforms.Normalize((.5,.5,.5),(.5,.5,.5)