zoukankan      html  css  js  c++  java
  • caffe_手写数字识别Lenet模型理解

    这两天看了Lenet的模型理解,很简单的手写数字CNN网络,90年代美国用它来识别钞票,准确率还是很高的,所以它也是一个很经典的模型。而且学习这个模型也有助于我们理解更大的网络比如Imagenet等等。

    我这里主要是对网络配置文件做了相关注释,没时间解释了,上车:http://pan.baidu.com/s/1jH4HbCy  ,密码:5gkn

    参考博客:http://blog.csdn.net/bea_tree/article/details/51601197

    现在来大致说一下Lenet的结构,如下:

    如上,一层数据层,两层卷积层和两层池化层(又称下采样层),再过两个全连接层和两个非线性层(Relu激活函数),最后输出Loss和accuracy;

    (注意这里的数据层又分为两层,一层在训练阶段有效,它计算出train_loss来调整参数;一层在测试阶段有效,它经过一次前向传播,得到test_loss和accuracy,并进行比较,防止过拟合;同时要注意这两种数据是同时参与CNN计算的,也就是一边训练一边测试)

    关于网络配置文件里还有几个地方我要说一下:

    (1)solver.prototxt中的momemtum(冲量):

    加上动量项就像从山顶滚下一个球,求往下滚的时候累积了前面的动量(动量不断增加),因此速度变得越来越快,直到到达终点。同理,在更新模型参数时,对于那些当前的梯度方向与上一次梯度方向相同的参数,那么进行加强,即这些方向上更快了;对于那些当前的梯度方向与上一次梯度方向不同的参数,那么进行削减,即这些方向上减慢了。因此可以获得更快的收敛速度与减少振荡。

    (2)卷积计算过程和池化计算过程:

    (3)decay_mult:权衰量

    关于梯度下降的优化参考这个博客:http://blog.csdn.net/heyongluoyao8/article/details/52478715

  • 相关阅读:
    java
    Java 自定义异常(转载)
    java中更新文件时,指定原文件的编码格式,防止编码格式不对,造成乱码
    tar命令压缩和解压
    微服务之服务注册与发现--Consul(转载)
    git push 时:报missing Change-Id in commit message footer的错误
    git 版本回退
    item 快捷键
    mac下mysql的卸载和安装
    JAVA正则表达式:Pattern类与Matcher类详解(转)
  • 原文地址:https://www.cnblogs.com/zf-blog/p/6213887.html
Copyright © 2011-2022 走看看