LeNet-5

最近在复习CNN相关,记录一下很经典的cnn网络,LeNet-5,本文将输出层用softmax替换原来的gaussian connection

欢迎访问原文地址,https://www.casscw.cn/index.php/archives/101/

结构概览

LeNet-5

除输入层外,总共7层网络,3层卷积,2层池化,1层全连接,1层输出

结构细节

C1-卷积层

shape tips
输入 (None, 32, 32, 1)
卷积核 6*(5*5)
输出 (None, 28, 28, 6)
参数 6*(5*5+1)=156

S2-池化层

shape tips
输入 (None, 28, 28, 6)
输出 (None, 14, 14, 6)
参数 0

C3-卷积层

shape tips
输入 (None, 14, 14, 6)
卷积核 16*(5*5)
输出 (None, 10, 10, 16)
参数 16*(6*5*5+1)=2416

值得注意的是,上面的参数不一定是表中这样。因为C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合。表中表示的是连接到所有6个特征图的情况。【每个特征图都需要对应一个不同参数的卷积核,最后直接相加得到卷积后的一个特征图】

S4-池化层

shape tips
输入 (None, 10, 10, 16)
输出 (None, 5, 5, 16)
参数 0

C5-卷积层

shape tips
输入 (None, 5, 5, 16)
卷积核 120*(5*5)
输出 (None, 1, 1, 120)
参数 120*(16*5*5+1)=48120

F6-全连接层

shape tips
输入 (None, 120)
输出 (None, 84)
参数 84*(120+1)=10164

OUTPUT-输出层

输出层,也可以看做一个全连接,输出维度就是类别数目

shape tips
输入 (None, 84)
输出 (None, 10)
参数 10*(84+1)=850

参数核对

利用keras编写lenet-5,调用model.summary()输出训练参数情况
LeNet-5