前言
最近自学pytorch,训练了卷积神经网络,写个博客记录一下,希望能够给初学者带来一点帮助,不对之处也希望大佬能够指正,共同学习进步。
卷积神经网络介绍
相信大噶对于卷积神经网络都有一定的了解,不熟悉的可以查看博客卷积神经网络进行学习。
一般来说卷积神经神经网络包含:输入层、卷积层、激活函数、池化层、全连接层。其作用简而言之就是:不断进行特征的提取和压缩,最终能得到比较高层次特征。然后,利用最后一层特征可以做各种任务:比如分类、回归等。
一般步骤就是:
- 定义一个模型;
- 预处理输入数据;
- 训练模型;
- 参数优化;
- 模型测试
1、CIFAR10分类
CNN模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# 输入图片为3通道,6个filter,卷积核为5*5,pad默认0,stride默认1
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
# input->卷积->激活->池化->卷积->激活->池化->特征展平->全连接->激活->全连接->激活->全连接->输出
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.v