本系列文章由 @yhl_leo 出品,转载请注明出处。

文章链接: http://blog.csdn.net/yhl_leo/article/details/51416540


看到之前的一篇博文:深入MNIST code测试,接连有读者发问,关于其中的一些细节问题,这里进行简单的答复。

Tensorflow中提供的示例中MNIST网络结构比较简单,属于浅层的神经网络,只有两个卷积层和全连接层,我按照Caffe的网络结构绘制一个模型流程:

再附上每一层的具体参数网络(依旧仿照caffe的模式):

现在再来解释一些读着的疑问:

  • 在卷积层conv1conv2中的32/64是什么,怎么来的?这里它们指的其实就是卷积核的数量,这里卷积核设置参数为[5,5,1,32], strides=[1,1,1,1], padding='SAME',分别解释一下:

    • [5,5,1,32]:卷积核为5x5的窗口,因为输入图像是一通道灰度图像,所以第三参数为1,使用彩色图像时,一般设置为3,最后32就是指卷积核的数量,为什么要使用这么多卷积核呢?我理解的是,每种卷积只对某些特征敏感,获取的特征很有限,因此将多种不同的卷积核分别对图像进行处理,就能获得更多的特征。每个卷积核按照规则扫描完图像后,就输出一张特征图像(feature map),因此32也指输出的特征图。
    • strides=[1,1,1,1]:指卷积窗口的滑动方式,这里是指逐像素滑动。
    • padding='SAME':所谓的padding是为了解决图像边缘部分的像素,很容易想象,当卷积窗口不是一个像素大小时,图像边缘的部分区域是不能覆盖的(或者说卷积窗口覆盖该像素时,部分窗口已经位于图像区域以外了),很简单的做法是先将图像的拓展一下,使得位于边缘区域的像素也能进行卷积。SAME就是一种padding方法,即图像向四周拓展kernel_width/2kernel_height/2个像素。那么这里输出的特征图像的大小就为:28x28x32
    • 同理[5,5,32,64]可以理解。
  • 关于batch大小,我也没有深入了解过,浅显的理解为:训练样本有几万张,如果一起进行结算,其中的矩阵太过庞大,对于计算机来讲非常有压力,所以分批进行,这里的50就是指每一批的训练子数据的大小。至于训练20000次,是否会导致同一个样本的重复训练?答案是绝对的,机器学习中,有bagging,random forests中有提到这方面的知识,想了解的话,可以自己阅读相关论文。

  • 关于训练中准确度反复的现象,这是在正常不过的,要真正理解,首先需要自行补习关于梯度下降算法的原理(这里不详细介绍),一般来讲,我们希望优化算法在最少步骤下收敛到理想的结果,但是难点在于如何在每一步优化的过程中提供最优的学习率,简单的做法是给定固定的”学习率“,例如这里设置的学习率是1e-3,这样做虽然不能保证每一步的优化是最优的,但是从大量的训练测试来看,整体趋势是朝着我们所想要的方向。最后附上一张图:

解释的比较简单,有不准确的地方请指正,希望能帮到有疑惑的读者,如有其它疑惑,大家一起探讨。

Tensorflow MNIST浅层神经网络的解释和答复的更多相关文章

  1. tensorFlow(四)浅层神经网络

    tensorFlow见基础 实验 MNIST数据集介绍 MNIST是一个手写阿拉伯数字的数据集. 其中包含有60000个已经标注了的训练集,还有10000个用于测试的测试集. 本次实验的任务就是通过手 ...

  2. Andrew Ng - 深度学习工程师 - Part 1. 神经网络和深度学习(Week 3. 浅层神经网络)

     =================第3周 浅层神经网络=============== ===3..1  神经网络概览=== ===3.2  神经网络表示=== ===3.3  计算神经网络的输出== ...

  3. deeplearning.ai 神经网络和深度学习 week3 浅层神经网络 听课笔记

    1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i]). 其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量: A[i-1]是第 ...

  4. deeplearning.ai 神经网络和深度学习 week3 浅层神经网络

    1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i]). 其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量: A[i-1]是第 ...

  5. 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第三周:浅层神经网络(Shallow neural networks) -课程笔记

    第三周:浅层神经网络(Shallow neural networks) 3.1 神经网络概述(Neural Network Overview) 使用符号$ ^{[

  6. 矩池云 | 搭建浅层神经网络"Hello world"

    作为图像识别与机器视觉界的 "hello world!" ,MNIST ("Modified National Institute of Standards and Te ...

  7. [DeeplearningAI笔记]神经网络与深度学习3.2_3.11(激活函数)浅层神经网络

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.2 神经网络表示 对于一个由输入层,隐藏层,输出层三层所组成的神经网络来说,输入层,即输入数据被称为第0层,中间层被称为第1层,输出层被称为 ...

  8. ng-深度学习-课程笔记-4: 浅层神经网络(Week3)

    1 神经网络概览( Neural Networks Overview ) 先来快速过一遍如何实现神经网络. 首先需要输入特征x,参数w和b,计算出z,然后用激活函数计算出a,在神经网络中我们要做多次这 ...

  9. 基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络

    基础 在参考①中我们详细介绍了没有隐含层的神经网络结构,该神经网络只有输入层和输出层,并且输入层和输出层是通过全连接方式进行连接的.具体结构如下: 我们用此网络结构基于MNIST数据集(参考②)进行训 ...

随机推荐

  1. bzoj1297 [SCOI2009]迷路——拆点+矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1297 一看感觉是矩阵快速幂之类的,但边权不好处理啊: 普通的矩阵快速幂只能处理边权为1的,所 ...

  2. 49.Ext.form.TextField()基本用法

    转自:https://blog.csdn.net/toudoulin/article/details/6719163 var textfieldName = new Ext.form.TextFiel ...

  3. codevs4511信息传递(Tarjan求环)

    题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...

  4. [Swift通天遁地]二、表格表单-(16)在表单行内嵌入日期和时间拾取器

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. [Swift通天遁地]五、高级扩展-(6)对基本类型:Int、String、Array、Dictionary、Date的扩展

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. BZOJ 1137 半平面交

    半平面交的板子 //By SiriusRen #include <bits/stdc++.h> #define double long double using namespace std ...

  7. 【POJ3255/洛谷2865】[Usaco2006 Nov]路障Roadblocks(次短路)

    题目: POJ3255 洛谷2865 分析: 这道题第一眼看上去有点懵-- 不过既然要求次短路,那估计跟最短路有点关系,所以就拿着优先队列优化的Dijkstra乱搞,搞着搞着就通了. 开两个数组:\( ...

  8. TCP简要讲解

    TCP被称为面向连接.面向流,可靠的传输层协议.它与UDP最大的不同在于它是可靠性的,所以需要可靠传输的时候就需要用到TCP,如果需要快速传输则选择UDP. TCP的连接又称为3次握手.   1).客 ...

  9. 【PostgreSQL-9.6.3】触发器实例

    1. 创建一个触发器,表中的行在任何时候被插入或更新时,当前用户名和时间也会被标记在该行中.并且它会检查雇员的姓名以及薪水. --创建测试表 CREATE TABLE emp ( empname te ...

  10. Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?

    Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别? Java 中访问数据库的步骤 1)注册驱动: 2)建立连接: 3)创建Statement: 4)执 ...