小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Deep Learning
  5. 正文

吴恩达深度学习课程DeepLearning.ai笔记(4-1)

2018年3月1日 1820点热度 0人点赞 0条评论

卷积神经网络 — 卷积神经网络基础

本部分整理了吴恩达课程学习笔记,但是并没有完全按照课程顺序,而是做了一些调序和删减。

1.边缘检测

卷积神经网络之所以叫卷积神经网络,是因为它包含有卷积操作。下面是在利用卷积实现边缘检测的过程:

边缘检测包括水平检测和垂直检测等多种类型,如上图所示。

①垂直边缘检测:

为了方便描述,在这里用灰度图像来表示,即是一个height×width的矩阵。课程里采用的是一个6×6的图片,以及一个3×3的filter(即卷积核)进行卷积运算。如图所示:

1520147332121194.jpg

其实,其计算过程是非常容易理解的。但是要注意,这里面的卷积与我们信号中的卷积有一点不同就是这里的卷积不需要反转。

计算过程如下:

选择左上角9个元素与卷积核的各个元素点乘(即相应元素分别相乘)再求和,得出卷积结果的第一个元素。然后依次右移一步或下移一步得出其它结果。

更加明显的结果如图3所示。

1520147353304920.jpg

②其它边缘检测:

水平边缘检测采用的卷积核其实很容易想到,就是对垂直边缘检测的卷积核做一个相应的调制而已,即变为以下:

1

1

1

0

0

0

-1

-1

-1

更多的filter包括:

sobel filter

1

0

-1

2

0

-2

1

0

-1

对于复杂的图片,我们可以直接将filter中的数字直接看作是需要学习的参数,其可以学习到对于图片检测相比上面filter更好的更复杂的filter,如相对于水平和垂直检测器,我们训练的 filter 参数也许可以知道不同角度的边缘。

通过卷积运算,结合反向传播算法,可以学习到相应于目标结果的filter(相应的参数),将其应用于整个图片,输出其提取到的所有有用的特征。

2.Padding

padding其实就是说往原图像的外侧填充零。如果没有padding,在实际做卷积操作的时候会遇到下面的问题:

l  每次卷积操作,图片会缩小。图片的尺寸由n×n变为(n-f+1)×(n-f+1)

l  边缘的位置卷积次数少可能会丢失有用信息。

正如前面所说,我们可以通过在图片的矩阵周围加0来作为加padding缓解这个问题。如图4所示。

1520147390465867.jpg

加了padding以后,卷积结果的尺寸变为了(n+2p-f+1)×(n+2p-f+1)。为了能够让图片大小保持不变,需要根据卷积核大小调整p的数值。

由此,卷积可以分为以下两类:

(1)Valid:没有padding

(2)Same:有padding,且保证输出与输入图片大小相同,即p=(f-1)/2。需要注意的是,在计算机视觉中,padding数值一般为奇数。

3.卷积步长(stride)

之前我们的卷积操作都是以步长s=1进行操作的。实际上,步长可以任意变化。假设卷积步长为s,则卷积运算以后,图片的尺寸变为了(((n+2p-f)/s)+1)×(((n+2p-f)/s)+1)。

注意:在当padding≠1时,若移动的窗口落在图片外面时,则不要再进行相乘的操作,丢弃边缘的数值信息,所以输出图片的最终维度为向下取整。

4.立体卷积和多卷积核

在前面我们用到的都是一个灰度图像,即不是RGB图像。实际图像的参数还有RGB参数,所以其实际上是尺寸为height×width×3。如图5所示,对于卷积核也必须是三维卷积核,才能得到卷积结果。卷积计算方式与前面的相似。

1520147416681151.jpg

单个卷积核应用在图片时,提取图片特定的特征。但是当我们需要提取不同的特征的时候,我们可以对其使用不同的卷积核,如图6所示。

1520147449110812.jpg

图6

5.池化层

全卷积网络包含三个部分,这些在之前人工智能课程也学到过,即:卷积层、池化层和全连接层。

池化层包括但不限于以下两种类型:

(1)最大池化:顾名思义,即对前一层得到的特征图进行池化减小,仅由当前小区域内的最大值来代表最终池化后的值。如图7所示。

1520147467978461.jpg

图7

在最大池化中,有一组超参数需要进行调整。

(2)平均池化:顾名思义,其选取的是小区域内的平均值来代表该区域内的值。如图8所示。

1520147494134257.jpg

图8

池化层中的超参数:

参数符号

参数名称

参数符号

参数名称

f

卷积核大小

s

卷积步长大小

-

最大池化或平均池化

p

padding步长(很少用)

注意:池化层没有需要学习的参数。

6.一个完整的卷积神经网络(CNN)

1520147510115080.jpg

随着网络的深入,提取的特征图片大小将会逐渐减小,但同时通道数量应随之增加;

Conv——Pool——Conv——Pool——Fc——Fc——Fc——softmax

  如果l表示一个卷积层,则如图10所示。

1520147536124168.jpg

图10

卷积神经网络的参数:

Activation   shape

Activation   Size

#parameters

Input

(32,32,3)

3072

0

CONV1(f=5,s=1)

(38,38,8)

6272

208

POOL1

(14,14,8)

1568

0

CONV2(f=5,s=1)

(10,10,16)

1600

416

POOL2

(5,5,6)

400

0

FC3

(120,1)

120

48001

FC4

(84,1)

84

10081

Softmax

(10,1)

10

841

 

根据上表可以得出,对于CNN的参数来说,在卷积层仅有少量参数,在池化层没有参数,在全连接层存在大量参数。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Python 人工智能 神经网络
最后更新:2018年3月1日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程小奥看房之鸿荣源珈誉府论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
已修:宇宙中心的英语听说课【清华大学】[2015-07-25] S.V Beijing Travel 18~22 新青年报[New Youth]第六期(最终期)发布! 英语四级成绩公布 Python之生成器 中考誓言
标签聚合
算法 linux leetcode 鸟哥的linux私房菜 生活 Java Python 高中 python学习 学习
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 8 个月前(10月20日) :wink:
niming 发布于 9 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号