LeNet
结构
LeNet最初是为Mnist,其结构较为简单,只有五层,其论文原图如下,论文参考为:Gradient-Based_Learning_Applied_to_Document_Recognition
根据自己的理解得到如下结构,我采用的数据集是Cifar-10,大小为32*32(当然具体的参数可以自己修改的,但是总体是这个意思):
借助pytorch可视化结果如下:
其解释如下:
- 首先是卷积部分,也就是卷积+池化的结构
- 第一个卷积层采用20个大小为5*5的卷积核,stride为1,卷积结果得到20*28*28
- 第一个池化层采用核大小为2*2的Max Pooling, stride为2,池化结果得到20*14*14
- 第二个卷积层采用50个大小为5*5的卷积核,stride为2,卷积结果得到50*10*10
- 第二个池化层采用核大小为2*2的Max Pooling,stride为2,池化结果得到50*5*5
- 接下去是FC层
- 第一个全连接层的神经元个数是500,之后接入ReLU激活函数增加非线性能力
- 第二个全连接层的神经元个数为10个,之后输出到softmax函数中,计算每个类别的得分值,完成分类
代码实现
在上面的结构上,FC层中增加了一个drop层
1 | class LeNet(torch.nn.Module): |
结果
该网络运行在Cifar-10数据集上的结果如下所示(batch_size = 256, epochs = 50):