本系列文章由 @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,这样做虽然不能保证每一步的优化是最优的,但是从大量的训练测试来看,整体趋势是朝着我们所想要的方向。最后附上一张图:

  • 关于dropout,是为了避免神经网络训练过程中由于数据样本的不足,导致的过拟合问题。推荐阅读论文:Dropout: A Simple Way to Prevent Neural Networks from Overfitting

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

转载于:https://www.cnblogs.com/hehehaha/p/6332131.html

Tensorflow MNIST浅层神经网络的解释和答复相关推荐

  1. 吴恩达《神经网络与深度学习》精炼笔记(4)-- 浅层神经网络

    上节课我们主要介绍了向量化.矩阵计算的方法和python编程的相关技巧.并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高了程序运算速度.本节课我们将从浅层神经网络入手,开始真 ...

  2. Coursera吴恩达《神经网络与深度学习》课程笔记(4)-- 浅层神经网络

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了向量化.矩阵计算的方法和python编程的相关技巧.并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高 ...

  3. DeepLearning.AI第一部分第三周、 浅层神经网络(Shallow neural networks)

    文章目录 3.1 一些简单的介绍 3.2神经网络的表示Neural Network Representation 3.3计算一个神经网络的输出Computing a Neural Network's ...

  4. 第三周:浅层神经网络

    1. 神经网络综述 首先,我们从整体结构上来大致看一下神经网络模型. 前面的课程中,我们已经使用计算图的方式介绍了逻辑回归梯度下降算法的正向传播和反向传播两个过程.如下图所示.神经网络的结构与逻辑回归 ...

  5. 深度学习入门笔记(六):浅层神经网络

    专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分 ...

  6. 使用浅层神经网络识别图片中的英文字母

    一.实验介绍 1.1 实验内容 本次实验我们正式开始我们的项目:使用神经网络识别图片中的英文字母. 激动人心的时刻到了,我们将运用神经网络的魔力,解决一个无法使用手工编程解决的问题.如果你(自认为)是 ...

  7. 吴恩达神经网络与深度学习——浅层神经网络

    吴恩达神经网络与深度学习--浅层神经网络 神经网络概述 神经网络表示 计算神经网络的输出 m个样本的向量化 for loop 向量化 向量化实现的解释 激活函数 sigmoid tanh函数 ReLu ...

  8. 卜若的代码笔记-Deeplerning-第四章:双层浅层神经网络

    1 回顾一下我们原始的神经网络 在这个网络里面抛开输入层和输出层,隐藏层就只有一层,虽然能挖掘部分特征,但是其远远不过,不过浅层神经网络本身的功率其实有限,我们会在以这一章节中尝试去添加新的一层W2. ...

  9. 1.4 浅层神经网络

    文章目录 1.4.1 神经网络概览(Neural Networks Overview) 1.4.2 神经网络表示(Neural Network Representation) 1.4.3 计算神经网络 ...

最新文章

  1. 2020ICPC·小米 网络选拔赛第一场(D. Router Mesh)
  2. 使用镜像加速 Rtools 下载与安装
  3. 搜索引擎选择: Elasticsearch与Solr
  4. Java Review - 并发编程_LockSupport
  5. Ollydbg中断方法浅探
  6. 5G的来龙去脉及未来
  7. P3163 [CQOI2014]危桥
  8. 人脸识别(5)---人脸识别技术及应用概览
  9. python ftp编程_Python编程-FTP
  10. C# 编译或者解释?
  11. python朴素贝叶斯分类器_简单说一下朴素贝叶斯分类器
  12. C++二叉链表遍历理论基础
  13. 微信公众号留言功能开通流程
  14. 航天恒星系统集成项目组
  15. 如何注册自己的OpenAI/ChatGPT账号?
  16. cmd模式下cd目录,文件夹命名有空格无法切换问题解决方法
  17. iOS开发常用三方库、插件、知名博客
  18. jQuery attr()获取属性和设置属性的方法
  19. 高考失利后,属于我的大学本科
  20. 个人对23种设计模式总结 优缺点分析

热门文章

  1. windows下忘记mysql超级管理员密码的解决办法
  2. React native 浏览器调试
  3. 企业进销存管理系统_攻略 | 七巧Plus定制您的专属进销存管理系统
  4. XamarinEssentials教程获取首选项的值
  5. Xamarin Essentials教程屏幕常亮ScreenLock
  6. 通用图片加载组件UniversalImageLoader
  7. OSINT系列:网站信任评估WOT
  8. Web应用漏洞评估工具Paros
  9. as 关联 android源码,android studio 2.x以上关联源码
  10. 解耦 多态性 java_java多态