作者:szx_spark

1. Padding

在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5。这样的好处有两点:

  • 在特征图(二维卷积)中就会存在一个中心像素点。有一个中心像素点会十分方便,便于指出过滤器的位置。

  • 在没有padding的情况下,经过卷积操作,输出的数据维度会减少。以二维卷积为例,输入大小 \(n\times n\),过滤器大小\(f\times f\),卷积后输出的大小为\((n-f+1)\times(n-f+1)\)。
  • 为了避免这种情况发生,可以采取padding操作,padding的长度为\(p​\),由于在二维情况下,上下左右都“添加”长度为\(p​\)的数据。构造新的输入大小为\((n+2p)\times(n+2p)​\) , 卷积后的输出变为\((n+2p-f+1)\times(n+2p-f+1)​\)。
  • 如果想使卷积操作不缩减数据的维度,那么\(p\)的大小应为\((f-1)/2\),其中\(f\)是过滤器的大小,该值如果为奇数,会在原始数据上对称padding,否则,就会出现向上padding 1个,向下padding 2个,向左padding 1个,向右padding 2个的情况,破坏原始数据结构。

2. Stride

卷积中的步长大小为\(s\),指过滤器在输入数据上,水平/竖直方向上每次移动的步长,在Padding 公式的基础上,最终卷积输出的维度大小为:

\[\left \lfloor \frac{n+2p-f}{s}+1 \right \rfloor \times \left \lfloor \frac{n+2p-f}{s}+1 \right \rfloor\]

\(\left \lfloor \right\rfloor\)符号指向下取整,在python 中为floor地板除操作。

3. Channel

通道,通常指数据的最后一个维度(三维),在计算机视觉中,RGB代表着3个通道(channel)。

  • 举例说明:现在有一张图片的大小为\(6\times 6\times 3\),过滤器的大小为\(3\times 3\times n_c\), 这里\(n_c\)指过滤器的channel大小,该数值必须与输入的channel大小相同,即\(n_c=3\)。
  • 如果有\(k\)个\(3\times 3\times n_c\)的过滤器,那么卷积后的输出维度为\(4\times 4\times k\)。注意此时\(p=0, s=1\),\(k\)表示输出数据的channel大小。一般情况下,\(k\)代表\(k\)个过滤器提取的k个特征,如\(k=128\),代表128个\(3\times 3\)大小的过滤器,提取了128个特征,且卷积后的输出维度为\(4\times 4\times 128\)。

在多层卷积网络中,以计算机视觉为例,通常情况下,图像的长和宽会逐渐缩小,channel数量会逐渐增加。

4. Pooling

  • 除了卷积层,卷积网络使用池化层来缩减数据的大小,提高计算的速度 ,同时提高所提取特征的鲁棒性。 池化操作不需要对参数进行学习,只是神经网络中的静态属性。
  • 池化层中,数据的维度变化与卷积操作类似。池化后的channel数量与输入的channel数量相同,因为在每个channel上单独执行最大池化操作。
  • f=2, s=2,相当于对数据维度的减半操作,f指池化层过滤器大小,s指池化步长。

5. 卷积神经网络(CNN)示例

课堂笔记中关于简单卷积神经网络的介绍:

一个用于手写数字识别的CNN结构如下图所示:

  • 该网络应用了两层卷积,并且在第二个池化层之后又接了几个全连接层,这样做的目的是避免某一层的激活值数量减少的太快,具体原因后文解释。

与卷积神经网络的参数数量计算相关的问题:

该手写数字识别的CNN具体参数数量可视化如下所示:

  • 从图中可以发现,卷积层的参数数量较小,大部分参数集中在全连接层。而且随着网络层的加深,激活值数量逐渐减少,如果激活值数量下降太快,会影响网络的性能。
  • 因此需要构建多个全连接层,而不是一个全连接层一步到位

6. 卷积层的好处

与只用全连接层相比,卷积层的主要优点是参数共享稀疏连接,这使得卷积操作所需要学习的参数数量大大减少。

吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(CNN)(上)的更多相关文章

  1. 【Deeplearning.ai 】吴恩达深度学习笔记及课后作业目录

    吴恩达深度学习课程的课堂笔记以及课后作业 代码下载:https://github.com/douzujun/Deep-Learning-Coursera 吴恩达推荐笔记:https://mp.weix ...

  2. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(一)

    Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十分方便,便于指出过滤器的位置. ...

  3. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(二)

    经典网络 LeNet-5 AlexNet VGG Ng介绍了上述三个在计算机视觉中的经典网络.网络深度逐渐增加,训练的参数数量也骤增.AlexNet大约6000万参数,VGG大约上亿参数. 从中我们可 ...

  4. 吴恩达深度学习笔记(deeplearning.ai)之循环神经网络(RNN)(三)

    1. 导读 本节内容介绍普通RNN的弊端,从而引入各种变体RNN,主要讲述GRU与LSTM的工作原理. 事先声明,本人采用ng在课堂上所使用的符号系统,与某些学术文献上的命名有所不同,不过核心思想都是 ...

  5. 吴恩达深度学习笔记(八) —— ResNets残差网络

    (很好的博客:残差网络ResNet笔记) 主要内容: 一.深层神经网络的优点和缺陷 二.残差网络的引入 三.残差网络的可行性 四.identity block 和 convolutional bloc ...

  6. 吴恩达深度学习笔记(十二)—— Batch Normalization

        主要内容: 一.Normalizing activations in a network 二.Fitting Batch Norm in a neural network 三.Why does ...

  7. 吴恩达深度学习笔记(七) —— Batch Normalization

    主要内容: 一.Batch Norm简介 二.归一化网络的激活函数 三.Batch Norm拟合进神经网络 四.测试时的Batch Norm 一.Batch Norm简介 1.在机器学习中,我们一般会 ...

  8. 吴恩达深度学习笔记1-神经网络的编程基础(Basics of Neural Network programming)

    一:二分类(Binary Classification) 逻辑回归是一个用于二分类(binary classification)的算法.在二分类问题中,我们的目标就是习得一个分类器,它以对象的特征向量 ...

  9. 吴恩达深度学习笔记(十一)—— dropout正则化

    主要内容: 一.dropout正则化的思想 二.dropout算法流程 三.dropout的优缺点 一.dropout正则化的思想 在神经网络中,dropout是一种“玄学”的正则化方法,以减少过拟合 ...

随机推荐

  1. 如何在win+r 或者是win10的应用搜索输入subl就能打开sublime

    这虽然不是什么技术贴,我实在不想开启sublime还要动鼠标,或者输入subl长长的全称,这里有两种做法: 第一种 在环境变量添加sublime安装目录的变量,一般sublime的安装目录会有subl ...

  2. 使用poi写excel文件

  3. vue-loader是什么?使用它的用途有哪些?

    vue-loader是解析 .vue 文件的一个加载器,跟 template/js/style转换成 js 模块: 用途:js可以写es6.style样式可以scss或less:template可以加 ...

  4. 20171129 ASP.NET中使用Skin文件

    在Web.config里加入<pages styleSheetTheme="DefSkin"/>再在App_Themes文件夹里建个DefSkin文件夹把css和Ski ...

  5. 永久有效的 webstorm license server 20180808

    下载地址  https://download.jetbrains.com/webstorm/WebStorm-2018.3.2.exe 2018年10月26日,最近老是过期,搞了一个1年有效的代码,是 ...

  6. [LeetCode] 153. Find Minimum in Rotated Sorted Array_Medium tag: Binary Search

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  7. android 流程跟踪

    #记录一下 Thread cur_thread = Thread.currentThread(); StackTraceElement stack[] = cur_thread.getStackTra ...

  8. vue中连续点击3次且时间间隔不超过3秒,才显示div(刚开始隐藏的)

    num:0,//点击次数timer0:'',//第一次点击的时间timer4:'',//第四次点击的时间centerDialogVisible: false // 连续4次点击显示模态框 change ...

  9. (已解决)Xcode 运行cocos2dx弹出内部错误对话框(Internal Error)

    cocos2dx未捕获的异常升高.选择“继续”继续运行在一个不一致的状态.选择“崩溃”停止应用和崩溃报告一个错误文件. 莫名其妙,代码没有报错,运行时却弹出(内部错误)对话框出来: 再看看崩溃的底层代 ...

  10. mysql的in和not in的用法(特别注意not in结果集中不能有null)

    1. not in的结果集中出现null则查询结果为null; 例如下面sql中,含有list中null值,无法正确查询结果: SELECT COUNT(name) FROM CVE WHERE na ...