胶州做网站的,做美食网站视频下载,站长工具seo推广,15个平面设计图素材网站卷积神经网络的具体原理和对应的python例子参见末尾的参考资料2.3.
这里仅叙述卷积神经网络的配置, 其余部分不做赘述#xff0c;构建和训练神经网络的具体步骤请参见上一篇: 用C语言构建一个手写数字识别神经网路
卷积网络同样采用简单的三层结构#xff0c;包括输入层con… 卷积神经网络的具体原理和对应的python例子参见末尾的参考资料2.3.
这里仅叙述卷积神经网络的配置, 其余部分不做赘述构建和训练神经网络的具体步骤请参见上一篇: 用C语言构建一个手写数字识别神经网路
卷积网络同样采用简单的三层结构包括输入层conv_layer中间层maxpool_layer, 和输出层output_layer, 其中输出层为全连接层 Input(28*28) | CONV3X3 (26x26x8_out) | MAXPOOL2X2 (13x13x8_out) | NVCELLs (10_out) |
输入层conv_layer:
为3x3的卷积层, 默认8个卷积核, 采用valid_padding(不填充),移动扫描步长为1不考虑偏置项. 需要通过训练来确定各个卷积核参数. 3x3的卷积核相比5x5和7x7的卷积核其参数量更少非线性度更高同时可以提取更小的特征. (5x5和7x7的卷积可以用多层3x3卷积来表示, 当然随着层数的增加可能会产生新的问题.) 卷积层的输入部分就是灰度值表示的28x28的手写数字图像,这里也预先进行了归一化处理即除以255.0 每个核对28x28数据进行卷积运算后输出26x26个数值. 每个卷积核只需要学习9个参数, 8个卷积核一共是72个参数. 如果是用20个全连接的神经元作为输入层的话一共需要学习(28x281)x2015700个参数
中间层maxpool_layer:
采用2x2最大池化步长也为2, 池化层没有参数, 不需要学习MAXPOOL具有防止过拟合的作用因其仅对最大值对应的节点进行反向传导相当于断开了与其他节点的连接在这里maxpool直接将conv_layer每个核的输出26x26下采样到13x13.
输出层output_layer: 一共10个神经元分别对应0~9数字的可能性与中间层的输出进行全连接这里中间层的输出数据已展平成一维假定中间层的输出是13x13x8, 那么展平后就是1352个节点也就是说输出层的每一个神经元都需要与这1352个节点连接每一个神经元需要学习1352(w)1(b)个参数
取5万条训练样本进行训练训练后再进行测试其准确率可超过94% 与全连接的神经网络相比较卷积神经网络的参数量大大降低训练的所需要时间也相应减少.
源代码
https://github.com/midaszhou/nnc 下载后编译: make TEST_NAMEtest_nnc3 参考资料: 1. MNIST手写数字集 http://yann.lecun.com/exdb/mnist/
2. CNNs, Part 1: An Introduction to Convolutional Neural Networks - victorzhou.com
3. CNNs, Part 2: Training a Convolutional Neural Network - victorzhou.com