CNN 主要解决 computer vision 问题,同时解决input X 维度太大的问题.

  

  

  

Edge detection

下面演示了convolution 的概念

  

下图的 vertical edge 看起来有点厚,但是如果图片远比6x6像素大的话,就会看到效果非常不错.

  

  

  

除了前面讲过的第一种filter, 还有两种 (Sobel filter, Scharr filter)

  

接下来会讲到 CNN 的两个重要的buiding block - padding, strided convolution. 也就是对前面所讲的basic convolution 的两种优化。

Padding

basic convolution 有两个问题, 一个是shrik output, 使得图像越来越小, 另一个是 throw away info from edge, 就是边缘的信息使用率不高. 为了解决这两个问题,在input image外围加了一个边框,就是padding.

  

那么怎么来选取padding 值的大小呢?有两种方法 'Valid' (no padding), 和 'Same' (output size is same as input size). 要达到Same 的效果,只需要满足 p = (f-1)/2。 f 值通常选取奇数,Andrew 给出两个原因,一个是可以达到Same的效果,一个是可以在filter 里有center pixel 来描述位置.

  

Strided convolution

如果要使得output size 更小,可以用strided convolution 方法,就是计算卷积的时候使得步长s更大。

  

  

实际上在deep learing 里经常说的convolution 对应的是数学概念里的cross-correlation, 两者的区别是,数学里的convolution 比cross-correlation 多一步对filter翻转的操作. 也就是说deep learning里的convoluton 叫做cross-correlation更确切一些。但是翻转那一步对deep learning 没有影响,所以deep learning 里就用convolution 来指代cross-correlation. Andrew 提到这个是为了让读者在读数学论文时候不至于困惑。

  

Convolution over volumes

前面讲的都是对2D 的image有卷积,现在开始讲对3D 的image 怎么求卷积。

  

  

前面一直在讲用一个filter 来识别 vertical 或者 horizotal edge, 那如果要同时识别vertical 和 horizotal edge呢?答案是可以同时使用两个filter, 具体如下图。

这里提一下,第3个维度可以叫channel, 也有人叫depth.

  

One Layer of convolutional network

一层convolution network 可以和传统的neural network 类比如下图。

  

  

下图解释了convolutional network 中,无论input layer  的 X 维度多大(比如5000维),我们都可以用这10个filter 来充当W[1] 的角色,同时保持280个parameters不变。

  

下面是CNN中的一些notation. 需要说明的是本课程用了n[H][l] * n[W][l] * n[C][l] 这样的顺序,在CNN里也有用 n[C][l] * n[H][l] * n[W][l] 这样的顺序,效果一样.

  

Simple convolutional network example

下图是一个多层ConvNet 网络,通常image size 会逐渐减小,而channel size会逐渐增大.

  

通常一个convolutional network里不仅有convoluional layer, 还会经常看到 pooling layer, 和fully connected layer.

  

Pooling layers

先看Max pooling, 就是根据filter 的大小在input image里取最大值。一旦filter 的维度f 和步长 s 确定了,就可以从input里得出output, 无需计算filter 的参数。

  

刚才是看的2D的情况,如果input lay 是3D的就是说有channel, 那么output 也会有相同的channel.

  

Max pooling 是求最大值,如果是求平均值,就叫average pooling. Average pooling 不常用.

  

通常padding=0. f, s 最常见的值如下图.

  

Typical CNN example

按照习惯conv layer 和 pooling layer 合起来叫一个network layer, 这是只计算了有weight 的conv layer 而pooling layer 没有weight 就没有算.

FC means Fully Connected layer. 其实就是传统的network layer.

  

  

Why convolutions?

相比于传统的fully connected network layer, convolutional layer 的parameters少的多.

  

为什么parameters 少了那么多,还能达到很好的performance呢?

有以下两个原因:

 feature sharing: 共享了3x3的filter,这个filter 的参数对每次convolutional 计算都是一样的。

 sparsity of connections: output 中的一部分只取决于 input 中的一部分。

  

  

Coursera, Deep Learning 4, Convolutional Neural Networks - week1的更多相关文章

  1. Coursera, Deep Learning 4, Convolutional Neural Networks - week4,

    Face recognition One Shot Learning 只看一次图片,就能以后识别, 传统deep learning 很难做到这个. 而且如果要加一个人到数据库里面,就要重新train ...

  2. Coursera, Deep Learning 4, Convolutional Neural Networks - week2

    Case Study (Note: 红色表示不重要) LeNet-5 起初用来识别手写数字灰度图片 AlexNet 输入的是227x227x3 的图片,输出1000 种类的结果 VGG VGG比Ale ...

  3. Coursera, Deep Learning 4, Convolutional Neural Networks, week3, Object detection

    学习目标 Understand the challenges of Object Localization, Object Detection and Landmark Finding Underst ...

  4. Deep Learning Tutorial - Convolutional Neural Networks(LENET)

    CNN很多概述和要点在CS231n.Neural Networks and Deep Learning中有详细阐述,这里补充Deep Learning Tutorial中的内容.本节前提是前两节的内容 ...

  5. 论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理 ...

  6. [CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  7. 【论文阅读】Learning Dual Convolutional Neural Networks for Low-Level Vision

    论文阅读([CVPR2018]Jinshan Pan - Learning Dual Convolutional Neural Networks for Low-Level Vision) 本文针对低 ...

  8. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week2 Neural Networks Basics课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week2 Neural Networks Basics 2.1 ...

  9. 论文阅读:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    前言 CVPR2016 来自Korea的POSTECH这个团队   大部分算法(例如HCF, DeepLMCF)只是用在大量数据上训练好的(pretrain)的一些网络如VGG作为特征提取器,这些做法 ...

随机推荐

  1. java 判断元素是否在数组内

    一,先转为List,再使用contains()方法 String[] strArr = new String[] { "a", "b", "c&quo ...

  2. WIndows下将文件夹映射为磁盘

    subst 盘符 文件夹路径 [/d] 映射 将e:\work映射为z:盘,使用subst z: e:\work 取消映射 取消z盘映射,使用subst z: /d 参考资料:http://mp.we ...

  3. 树结构关系的数据导出为excel

    该文针对的是关于树结构的数据的导出,每一个节点都可以创建不定数的子节点,在选择好某个节点进行导出 时,会把该节点以及子节点的数据都导出来.导出后的excel的格式大概如下图的形式,这个是一个比较理想 ...

  4. function call操作符(operator()) 仿函数(functor)

    主要是需要某种特殊的东西来代表一整组操作 代表一整组操作的当然是函数,过去通过函数指针实现 所以STL算法的特殊版本所接受的所谓条件或策略或一整组操作都以仿函数的形式呈现 #include <i ...

  5. mybatis源码分析(方法调用过程)

    十一月月底,宿舍楼失火啦,搞得20多天没有网,目测直到放假也不会来了... 正题 嗯~,其实阅读源码不是为了应付面试,更重要的让你知道,大师是怎样去写代码的,同样是用Java,为啥Clinton Be ...

  6. appium在不同类中使用的是同一个session

    要这么做的起因: 测试testng框架的时候,不同类之间可以按照顺序执行,不会互相干扰.但是换成了appium,在A类中启动了session,初始化或者一些数据我仍然要用之前的session,那就不行 ...

  7. okhttp 内网可以有,但外网访问数据返不回来,代码一样

    :1.问题点在于 下图红框里写成 text/html了,需要改成application/json,造成的问题有:unexpected end of stream  这个是406错误:加上日志之后okh ...

  8. Go GraphQL初学者教程

    Go GraphQL初学者教程 https://tutorialedge.net/golang/go-graphql-beginners-tutorial/ https://tutorialedge. ...

  9. python金融反欺诈-项目实战

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  10. Zabbix Server 自带模板监控有密码MySQL数据库

    Zabbix Server 自带模板监控有密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.Zabbix-agent端的配置 1>.为数据库设置密码 ...