基于LetNet的手写体数字识别的学习
1. tensorflow的安装
教程参考:https://blog.csdn.net/qy13913453196/article/details/82589792
https://blog.csdn.net/lxy_2011/article/details/79181990
总而言之,只有一句话:直接到anaconda3->Anaconda Navigate->environment。选择一个环境,搜索not
installed中的tensorflow下载apply。
2.LetNet的原理
原理部分来自:https://www.cnblogs.com/houjun/p/8535070.html
https://blog.csdn.net/sinat_24143931/article/details/78958931
LeNet-5包含于输入层在内的8层深度卷积神经网络。其中卷积层可以使得原信号特征增强,并且降低噪音。而池化层利用图像相关性原理,对图像进行子采样,可以减少参数个数,减少模型的过拟合程度,同时也可以保留一定的有用信息。
图中是一个图形识别的CNN模型。可以看出最左边的船的图像就是我们的输入层,计算机理解为输入若干个矩阵,这点和DNN基本相同。
接着是卷积层(Convolution Layer),这个是CNN特有的,我们后面专门来讲。卷积层的激活函数使用的是ReLU。ReLU(x)=max(0,x)。在卷积层后面是池化层(Pooling layer),这个也是CNN特有的,池化层没有激活函数。
卷积层+池化层的组合可以在隐藏层出现很多次,上图中出现两次。而实际上这个次数是根据模型的需要而来的。可以灵活使用卷积层+卷积层,或者卷积层+卷积层+池化层的组合,这些在构建模型的时候没有限制。但是最常见的CNN都是若干卷积层+池化层的组合,如上图中的CNN结构。
在若干卷积层+池化层后面是全连接层(Fully Connected Layer, 简称FC),只是输出层使用了Softmax激活函数来做图像识别的分类。