1.下载训练集数据和测试集数据
2.利用pytorch定义一个CNN:
CNN结构:conv1-->relu-->pool-->conv2-->relu-->pool-->view()-->fc1-->relu-->fc2-->relu-->f3
pytorch中神经网络的一般形式:
class Net(nn.Module):
def __init__(self):
super(Net,self).__init__
self.conv1=nn.Conv2d(3,6,5)
self.conv2=nn.Conv3d(3,16,5)
self.pool=nn.MaxPool2d(2,2)
self.fc1=nn.Linear(16*5*5,120)
self.fc2=nn.Linear(120,84)
self.fc3=nn.Linear(84,10)
def forward(self,x):
x=self.pool(F.relu(self.conv1(x)))
x=self.pool(F.relu(self.conv2(x)))
x=x.view(-1,16*5*5)
x=F.relu(self.fc1(x))
x=F.relu(self.fc2(x))
x=self.fc3(x)
return x
net=Net()
3.定义loss function和优化函数
import torch.optim as optim
criterion=nn.CrossEntropyLoss()
optimizer=optim.SGD(net.parameters(),lr=0.001,momentum=0.9)
4训练
for epoch in range(num_epochs)
running_loss=0.0
for 每个minibatch
inputs,labels=data
optimizer.zero_grad()#梯度清零
outputs=net(intputs)#前向传播
loss=criterion(outputs,labels)#计算损失
loss.backward()#反向传播
optimizer.step()#更新参数
输出loss