基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型

基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型

基于tensorflow的MNIST手写数字识别(二)--入门篇

基于tensorflow的MNIST手写数字识别(三)--神经网络篇

1、卷积

2、池化

3、全连接

4、梯度下降法

5、softmax

本次就是用最简单的方法给大家讲解这些概念,因为具体的各种论文网上都有,连推导都有,所以本文主要就是给大家做个铺垫,如有错误请指正,相互学习共同进步。

二、卷积神经网络讲解

2.1卷积神经网络作用

大家应该知道大名鼎鼎的傅里叶变换,即一个波形,可以有不同的正弦函数和余弦函数进行叠加完成,卷积神经网络也是一样,可以认为一张图片是由各种不同特征的图片叠加而成的,所以它的作用是用来提取特定的特征,举个例子,比如给定一张图片,然后我只想提取它的轮廓,于是就需要卷积神经网络。

2.2卷积神经网络模型

如图是大名鼎鼎的LeNet-5(识别数字的卷积网络),效果和论文在此,这里拿出来只是为了说明一下卷积神经网络的模型,就像图中那样,经过多次,卷积,池化(又叫子采样),然后全连接,就完工了。

2.3 卷积

2.3.1 卷积的原理

其实卷积很好理解,左侧绿色的部分的5*5矩阵其实一般就是我们输入的图片的灰度值(可以想象成一张5px*5px的黑白照片,然后把黑白照片上的每一个点转化成矩阵上的每一个元素),然后上面的黄色部分矩阵就是我们的过滤器,用来提取特征,(其实应该叫滤波器或者卷积核),让卷积核在输入矩阵上进行从左到右,从上到下滑动,然后每一次滑动,两个矩阵对应位置的元素相乘然后求和,就是右边那个矩阵的一个元素。

2.3.2 滑动的步长-stride

上面那张图片从左到右,每次滑动的时候只移动一格,但是其实它一次滑动多格,这就是步长

2.3.3 卷积的边界处理-padding

如上图所示,卷积后的矩阵只有3*3,比原来的图片要小了,因为边界没有了,所以要考虑这个边界的问题,网上说卷积的边界处理有两种方式:

一、丢掉边界,也就是就按右边那个缩小的矩阵来。

二、复制边界,也就是把左边的最外层原封不动地复制过去

但是在看matlab代码和tensorflow代码的时候发现并不是那么简单的事情。

matlab中conv2这个“padding”参数可以设为三个值FULL,SAME,VALID

tensorflow中conv2d的"padding"参数可以设为两个值SAME,VALID

它们对边界是这样处理的,对输入的矩阵,包裹n层0,然后再按照上面所说的卷积方法进行卷积,这个n怎么求呢,

FULL:edge_row = kernel_row - 1;   edge_cols = kernel_cols - 1;

SAME:edge_row = (kernel_row - 1) / 2;edge_cols = (kernel_cols - 1) / 2;

VALID:edge_row = edge_cols = 0;

edge_row就是边的行数,kernel_row就是卷积核的行数,所以上面讲的其实就是VALID模式

2.3.4 卷积与神经网络

右下角就是卷积的数学公式,矩阵的对应元素相乘求和,然后加上一个偏置值

2.4 池化

池化分为两种,一种是最大池化,在选中区域中找最大的值作为抽样后的值,另一种是平均值池化,把选中的区域中的平均值作为抽样后的值,这样做的,原因是为了后面全连接的时候减少连接数

2.5 全连接

左边的是没有没有进行卷积的全连接,假设图片是1000*1000的,然后用1M的神经元去感知,最后需要10^12个权值作为参数,右边是经过卷积过的,每个圆点是一个神经元,因此只是用一个卷积核的话,其实只要100*10^6,数量级就大大减少,而且因为提取的就是所需的特征,所以在加快训练速度的时候对结果并不会产生过大的影响,甚至更为精确。

2.6 梯度下降法

可能很多人会问,那个卷积核是怎么得出来的呢,其实它是被各种训练集训练出来的,利用梯度下降法使得我们的参数到达最优解。

梯度下降法可以这样子理解,假设我们正在下山,要使得下山的路径达到最短,于是我们每走一步之前就判断一下四面八方从哪个方向跨出这一步会最短,不过学过算法的人应该都知道,有个问题就是,我们当前走的这一步是当前位置最短的,但是真正从山上到山下最短路径可能并不路过这一步。也就是说这是个局部最优解,而不是全局最优解,我们得到的路径并不一定是最短的,但是也足够优秀,原因就是,得到最优解费时费力,性价比并不高。这一个知识点还是建议大家伙去看一下斯坦福Andrew Ng的《机器学习》,然后就能理解上面所说的权值参数要少的意义了。

2.7最后 softmax

softmax是分类用的,说直白一点就是归一化,因为这个店最好跟例子结合起来,所以暂时不多说,感兴趣的可以去网上找,也可以关注后面的系列文章。


三、总结

其实感觉讲的并不深入,因此还是希望各位能自己去仔细钻研一下,这里给各位一些基础吧,读起论文和数学公式来会更轻松一些。

四、参考文章

神经网络介绍

http://ufldl.stanford.edu/wiki/index.php/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C

技术向:一文读懂卷积神经网络CNN

http://www.cnblogs.com/nsnow/p/4562308.html

深度学习(卷积神经网络)一些问题总结

http://blog.csdn.net/nan355655600/article/details/17690029

卷积神经网络(CNN)

http://ibillxia.github.io/blog/2013/04/06/Convolutional-Neural-Networks/

Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

http://www.cnblogs.com/nsnow/p/4562363.html

数据挖掘系列(10)——卷积神经网络算法的一个实现(转)

http://blog.sina.com.cn/s/blog_4ff49c7e0102vl5m.html

Matlab/DeepLearnToolbox

https://github.com/rasmusbergpalm/DeepLearnToolbox

Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

http://blog.csdn.net/zouxy09/article/details/9993371

Deep Learning论文笔记之(五)CNN卷积神经网络代码理解

http://blog.csdn.net/zouxy09/article/details/9993743

斯坦福  池化

http://ufldl.stanford.edu/wiki/index.php/%E6%B1%A0%E5%8C%96

CNN神经网络层次分析

http://blog.csdn.net/liulina603/article/details/44915905

深度学习笔记1(卷积神经网络)

http://blog.csdn.net/lu597203933/article/details/46575779

CNN公式推导

http://blog.csdn.net/lu597203933/article/details/46575871

前向型神经网络之BPNN(附源码)

http://blog.csdn.net/heyongluoyao8/article/details/48213345

残差与误差的区别

http://wenku.baidu.com/link?url=DUDkyV1tnD_SEGzgcxb9AaFU5VUcP9ISNR8q39-fpCcq_LGUHY7ucx5vDwr-MCfU_ofr7yIQZ_UgTfiivTtaDOulW2DD3pGs07eYmiQv5P7

反向传导算法

http://deeplearning.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95

图像卷积与滤波的一些知识点

http://blog.csdn.net/zouxy09/article/details/49080029

CNN卷积神经网络原理简介+代码详解

http://doc.okbase.net/u012162613/archive/126058.html

卷积神经网络(lenet)

http://deeplearning.net/tutorial/lenet.html

激活函数的作用

https://www.zhihu.com/question/22334626

神经网络入门第一部分

http://blog.sina.com.cn/s/blog_6a67b5c50100tspb.html

神经网络入门第二部分

http://blog.sina.com.cn/s/blog_6a67b5c50100tspe.html

卷积神经网络全面解析

http://www.moonshile.com/post/juan-ji-shen-jing-wang-luo-quan-mian-jie-xi

Deep learning:四十一(Dropout简单理解)

http://www.cnblogs.com/tornadomeet/p/3258122.html

DeepLearning (六) 学习笔记整理:神经网络以及卷积神经网络

http://www.07net01.com/2015/11/963741.html

深度卷积网络CNN与图像语义分割

http://blog.csdn.net/xiahouzuoxin/article/details/47789361

MATLAB conv2卷积的实现

http://blog.csdn.net/celerychen2009/article/details/38852105

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容