在深度学习(五)-全连接神经网络实现 M N I S T MNIST MNIST 手写数字分类中,我是用全连接神经网络实现了 M I N S T MINST MINST 手写数字分类,这里我就不再介绍 M I N S T MINST MINST 数据集和数据的处理了,我们直接进入主题,创建卷积神经网络。
网络模型创建
我们可以先创建一个最简单的三层神经网络,两层卷积层,两层池化层,一层全连接层:
class simpleCNN(nn.Module):
def __init__(self):
super(simpleCNN, self).__init__()
self.layer1 = nn.Sequential( # 1, 28, 28
nn.Conv2d(1, 16, 5, 1, 2), # 卷积层,输入深度为1,输出深度16,卷积核5*5,步长1,padding=(kernel_size-1)/2如果stride=1
nn.ReLU(), # 激活层
nn.MaxPool2d(kernel_size=2) # 池化层
) # 输出: 16, 14, 14
self.layer2 = nn.Sequential( # 全连接层
nn.Linear(16*14*14, 10) # 32*7*7
)
def forward(self, x):
x = self.layer1(x)
x = x.view(x.size(0), -1) # 多维展开
output = self.layer2(x)
return output
在全连接神经网络 MINST 手写数字分类中,我们看到一张图片的大小为 [ 1 , 28 , 28 ] [1, 28, 28] [1,28,28],即 深度为 1 1 1,高度 28 28