deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
1. 传统的边缘检测(比如Sobel)手工设计了3*3的filter(或者叫kernel)的9个权重,在深度学习中,这9个权重都是学习出来的参数,会比手工设计的filter更好,不但可以提取90度、0度的边缘,也可以提取出任意朝向的边缘(比如73度)。把这9个权重当成参数的思想已经成为计算机视觉中最为有效的思想之一。
2. Padding
对于原始的卷积操作,原图分辨率为n*n,filter分辨率为f*f,则卷积后的结果是 (n-f+1)*(n-f+1)。有两个缺点:1)每次卷积操作都会把图像缩小;2)边缘像素的使用次数比中间像素少,这意味着丢掉了图像的很多边缘信息。为了解决这两个问题,可以在做卷积操作前,先填充(pad)原图。每边填充p个像素,则原图拓展成 (n+2p)*(n+2p) 的分辨率。
p的选择分两种,1)Valid卷积:没有填充,p=0;2)Same卷积:输出和输入有相同的尺寸,p=(f+1)/2。计算机视觉里,f几乎永远是奇数。
3. Stride(步长)
步长为s,则输出的分辨率为 ((n+2p-f)/s+1)*((n+2p-f)/s+1)。如果(n+2p-f)/s不为整数,则向下取整到最近的整数(floor),这个物理意义是只有filter在输入图像内部或者填充后的图像区域才计算卷积,如果filter移动到外面,则不计算。
4. Cross-correlation vs. convolution
卷积的数学定义有flip的步骤,我们这边做的严格说叫corss-correlation(互相关)。但是在深度学习的文献中,按照惯例,我们还是称之为卷积,虽然我们并没有flip的操作。在数学、信号处理中,flip很重要是因为它有结合律的性质,(A*B)*C=A*(B*C)。但在图像处理里,这个性质不重要,所以省去了flip的操作。
5. 多通道图像的卷积
对于n*n*nc的多通道图像,filter是f*f*nc,得到 (n-f+1)*(n-f+1) 的图像。通道数必须一致。
每个filter对应一个特征(比如垂直方向边缘),如果要得到多个特征,则要使用多个filter,每个filter都是f*f*nc,然后把每个filter的结果堆叠起来,这时的结果是 (n-f+1)*(n-f+1)*nc' ,这里nc'是filter的数量,也就是下一层网络的输入图像的通道数。
这里所谓的“通道(channel)”在一些文献里也被称为“深度(depth)”,NG觉得通道更好,因为深度会和神经网络的深度混淆。
6. 单层卷积网络
对于第l层的卷机网络,f[l]是filter的大小(即第l层的filter大小为f*f),p[l]表示padding的像素数量,s[l]表示stride的大小,输入图像是nh[l-1]*nw[l-1]*nc[l-1],输出图像是nh[l]*nw[l]*nc[l],其中nh/w[l]=floor( (nh/w[l-1]+2p[l]-f[l])/s[l]+1 ),nc[l]是这一层的filter的数量,每个filter的大小是f[l]*f[l]*nc[l-1]。激活后的输出a[l]的大小是nh[l]*nw[l]*nc[l],如果有m个样本,向量化之后的激活输出A[l]的大小是m*nh[l]*nw[l]*nc[l]。权重的大小是f[l]*f[l]*nc[l-1]*nc[l]。bias的大小是nc[l],python里的size是 (1, 1, 1, nc[l])。图像的长宽和通道的排序并没有统一,这里NG是把通道放最后(即nh*nw*nc),有的代码是放最前面(即nc*nh*nw)。
例子:如果有10个3*3*3的filter,这一层网络一共有(3*3*3+1)*10=280个参数。对于任意大小的图像,这层网络都只有280个参数,这有效控制住了参数的数量,防止过拟合。
7. 池化层
和卷积操作一样,也是用filter对原图进行操作,超参数是filter的大小f和步长s。一般 f=2,s=2,效果相当于高度和宽度各缩减一半。也有 f=3,s=2的情况。没有需要学习的参数。目的:缩减模型的大小,提高计算速度,提高所提取特征的鲁棒性。
Max pooling:直观解释:只要filter的区域内提取到某个特征,它都会被保留在输出里。
Average pooling:filter内取平均。
Max pooling是最常用的。对于特别深的网络,也许会用average pooling来处理很多通道的数据(比如7*7*1000,整个空间内求平均值得到1*1*1000)。也可以根据自己的意愿做padding,则多一个超参数p,但padding的操作非常非常少用。一般池化层filter的通道数为1,对输入的每个通道单独处理,所以输入有几个通道,输出也是几个通道。
8. 卷积神经网络
前向传播中,随着层数越来越深,图像往往越来越小(开始阶段可能保持相同大小),通道数越来越多。
卷积神经网络一般包含:卷积层(CONV)、池化层(POOL)、全连接层(FC)。池化层没有需要学习的参数,只有超参数。卷积层的参数相对少,大部分参数都在全连接层。
一般一个或多个卷积层后会跟一个池化层,最后几个全连接层(最后一层也许是softmax)。有的书把卷积层、池化层合起来称做一层,有的书把卷积层、池化层分开来算。NG说我们在说深度学习网络有多少层时只考虑有权重的层,由于池化层没有,所以他就把卷积层、池化层合起来称做一层。
9. 卷积层的优点
相比于全连接层,卷积层的两个主要优势:1)参数共享(parameter sharing),某种特征提取器(比如垂直方向的边缘检测)在图像的某一部分适用,那么在其他部分也适用。2)稀疏连接(sparsity of connections),输出的每个元素只与一部分输入有关,从而预防过拟合。
deeplearning.ai 卷积神经网络 Week 1 卷积神经网络的更多相关文章
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
介绍 DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录. 另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程 ...
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
一.深层神经网络 深层神经网络的符号与浅层的不同,记录如下: 用\(L\)表示层数,该神经网络\(L=4\) \(n^{[l]}\)表示第\(l\)层的神经元的数量,例如\(n^{[1]}=n^{[2 ...
- DeepLearning.ai学习笔记汇总
第一章 神经网络与深度学习(Neural Network & Deeplearning) DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络 DeepLe ...
- Coursera深度学习(DeepLearning.ai)编程题&笔记
因为是Jupyter Notebook的形式,所以不方便在博客中展示,具体可在我的github上查看. 第一章 Neural Network & DeepLearning week2 Logi ...
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week3 目标检测
一.目标定位 这一小节视频主要介绍了我们在实现目标定位时标签该如何定义. 上图左下角给出了损失函数的计算公式(这里使用的是平方差) 如图示,加入我们需要定位出图像中是否有pedestrian,car, ...
- deeplearning.ai 卷积神经网络 Week 2 深度卷积网络:实例研究 听课笔记
1. Case study:学习经典网络的原因是它们可以被迁移到其他任务中. 1.1)几种经典的网络: a)LeNet-5(LeCun et al., 1998. Gradient-based lea ...
- deeplearning.ai 卷积神经网络 Week 2 卷积神经网络经典架构
1. Case study:学习经典网络的原因是它们可以被迁移到其他任务中. 1.1)几种经典的网络: a)LeNet-5(LeCun et al., 1998. Gradient-based lea ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM
http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...
- 卷积神经网络(CNN)之一维卷积、二维卷积、三维卷积详解
作者:szx_spark 由于计算机视觉的大红大紫,二维卷积的用处范围最广.因此本文首先介绍二维卷积,之后再介绍一维卷积与三维卷积的具体流程,并描述其各自的具体应用. 1. 二维卷积 图中的输入的数据 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
随机推荐
- Opencv中的轮廓(不全)
1.初识轮廓 为了准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理,或者Canny边界检测. 查找轮廓的函数会修改原始图像.如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他 ...
- Springmvc接收数组参数
Springmvc接收数组参数,必须添加@RequestParam注解 注解格式@RequestParam(value="前端参数名[]") 示例: controller端的代码 ...
- lemon
这本是一个技术博客网站 我却用来记录关于六月 就好像特别才不配你的特别一样 就好像以后要特别喜欢cos一样 就好像再特别的六月也会过渡到七月一样
- NOIp2018解题报告
D1: T1 \(Ans = \sum_{i=2}^{n} |a_{i}-a_{i-1}|\),正确性可由贪心证得 T2 考虑贪心,选出一个属于A的集合,容易证明其是最优的 然后考虑一个数如果不被选, ...
- 吴裕雄--天生自然Linux操作系统:Linux 安装
Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用,参考各大云服务器比较:https://www.runoob.com/linux/ ...
- android implementation 依赖第三方库
依赖第三方库
- 题解 P4171 【[JSOI2010]满汉全席】
什么,tarjan?那是什么? 码量太大,我选择放弃 为什么不用dfs写2-sat呢?他会伤心的说 这题2-sat的过程大佬们已经讲得非常清楚了,我就略微提一下,主要讲dfs的原理 2_sat原理 我 ...
- ZJNU 1164 - 考试排名——中级
1.如果一个单元为0,表示没做过这题,不计入成绩 2.如果一个单位为负数,表示做错了这题,不计入成绩 所以只要一个单元为正数(不论是否有括号)都说明做出了这一题,计入成绩 将名字和成绩都当作字符串读入 ...
- tensorflow实现sphereFace网络(20层CNN)
#coding:utf-8 import tensorflow as tf from tensorflow.python.framework import ops import numpy as np ...
- 从西班牙、英国出租车与Uber之争,看共享打车未来发展趋势
一种新事物.新服务的崛起,必然会损害传统事物和服务的既得利益.比如在电灯泡发明之初,煤油灯企业就将电灯泡专利收购并"雪藏"以维护自己的利益.而电商的崛起,也让传统的线下实体店受到严 ...