1 问题
卷积的过程就是将一个卷积核(convolution kernel),通常是一个 K乘K 的矩阵,对原图的每个像素点做卷积计算从而得到一个新的 M乘N 的图像。这个卷积过程可以对原图执行不同的操作:模糊、锐化、描边等等,而这些操作全都由卷积核的性质决定。如何搭建卷积神经网络,是我们需要研究的内容。
2 方法
我们首先通过继承nn.Module定义我们的CNN Class,然后在__init__里创建CNN的每个layer。神经网络所有运算通过forward函数实现。这个CNN例子中一共是两个2维卷积层和两个全连接线性层,2 通过一些激活函数(activation function)做连接,最后输出softmax分类结果。我们把所有的神经网络层都放在__init__中,激活所有的函数。
输入图像是(1*1*28*28):第一个1是batch size,这里可以忽略,这是一张单通道,28*28的图像。卷积层的输入也是单通道,需要和图像的通道数量保持一致!输出是10个通道,卷积核的尺寸是5*5。所以我们的输出也自然是 (1*10*24*24):其中batch size = 1 保持不变,图像变成了(24*24),24 = 28 - 5 + 1
最后torch.size结果如下: