本节将介绍利用CNN进行手写体识别
首先呢,我们需要下载数据来进行训练。下载的代码如下:
注意:数据集下载一次就好,
DOWNLOAD_MNIST = True
train_data=torchvision.datasets.MNIST(#下载数据的代码
root='./mnist',
train=True,
transform=torchvision.transforms.ToTensor(), #(网上数据改为tensor),0-1之间,并复制到train_data中
download=DOWNLOAD_MNIST#没有下载就=true,下载了就用false
)
然后我们简单介绍一下卷及神经网络CNN的结构:
整体流程是:卷积(Conv2d) -> 激励函数(ReLU) -> 池化, 向下采样 (MaxPooling) -> 再卷积(Conv2d) -> 再激励函数(ReLU) -> 再池化, 向下采样 (MaxPooling) -> 展平多维的卷积成的特征图 -> 接入全连接层 (Linear) -> 输出。
全部代码如下:(给出了大部分的详细注释)
import torch
import torch.nn as nn
from torch.autograd import Variable
import torch.utils.data as Data
import torchvision
import matplotlib.pyplot as plt
EPOCH=1 #训练整批数据的次数
BATCH_SIZE = 50#批训练的数据个数
LR = 0.001 # 学习率
DOWNLOAD_MNIST = False
train_data=torchvision.datasets.MNIST(#下载数据的代码
root='./mnist',
train=True,
transform=torchvision.transforms.ToTensor(), #(网上数据改为tensor),0-1之间,并复制到train_data中
download=DOWNLOAD_MNIST#没有下载就=true,下载了就用false
)
<