005-卷积神经网络01-卷积层

网络要做的步骤:(一个中国人,给中国人教学,为什么要写一堆英语?)

1, sample abatch of data(数据抽样)

2,it through the graph ,get loss(前向传播,得到损失值)

3,backprop to calculate the geadiets(反向传播计算梯度)

4,update the paramenters using the gradient(使用梯度更新参数)

卷积神经网络可以做的事情:

分类                                            取回(推荐)

检测出(同事有分类和回归)                    分割

自动驾驶(推荐利用GPU)

特征提取

姿势识别(关键点的定位)

  癌细胞判别               字体识别                  图标识别                            

图像字幕(让机器读懂世界)CNN+LSTM

style transfer(风格转移)

如何实现?

卷积神经网络组成:

[INPUT -CONV -RELU -POOL -FC]

?输入层
?卷积层
?激活函数
?池化层
?全连接层

卷积是什么鬼?

暂时有个小助手,叫做filter,帮我们在32×32×3上提取特征。

如何提取?先从直观上理解卷积到底干了一件什么事,先看二维的:

将32×32划分成一些区域,例如划分成好多5×5的区域,那么一个5×5的区域提取出一个特征值

特征值提取出来之后形成5×5的矩阵。

提取出来的叫做特征图

前面少说了一个filter的深度,这里说一下:

filter的深度3,必须要与输入的深度3保持一致才可以。

为什么提取出的特征图是2个?

因为这里设置了filter1和filter2,分别提取出不同的特征,而且这两个特征图没有任何关系。

比如说这个:

有f1,f2,f3,f4,f5,f6

就得到了6层特征图,将这6个特征图堆叠在一起,就会得到卷积的输出结果

多层卷积:

说白了就是将卷积提取完的特征图当做输入,再进行卷积特征提取。

32×32×3用6个5×5×3的filter提取出了28×28×6的特征图,再将这个28×28×6的特征图用10个5×5×6的filter提取出了24×24×10的特征图

卷积提取的结果,大概是怎么样的?

通过输入→卷积→特征→卷积→特征→卷积→特征

相当于一步一步的浓缩,将最后的特征拿来作为分类或者回归的任务。

卷积(特征提取)的具体计算方法:

w0与x蓝色区域做内积(对应位置相乘后相加):

f1第1层  = 0×1+ 0×1+ 0×1     + 0×-1+ 1×-1+ 1×0     + 0×-1+1×1+1×0 = 0

f1第2层  = 0×-1+0×-1+0×1     +0×-1+0×1+1×0     +0×-1+2×1+2×0 = 2

f1第3层 = 0×1+0×0+0×-1+      0×0+2×0+2×0+     0×1+0×-1+0×-1+ = 0

那么根据神经网络得分函数:f(x,w) = wx+b

这里的b  =1

那么输出的得分值就为f1+f2+f3+b = 0+2+0+1 =3

最右边绿色的矩阵第1行,第1列,就是3

第二步:同理计算出特征值的第1行,第2列,得到-5

第三部,同理计算出特征值的第1行,第3列,得到-4

同样大小的filter在输入上向下挪2行,按照1,2,3的步骤继续计算,得到特征矩阵的第2行

再向下挪2行,得到特征矩阵的第3行

同理再得出f2(w1)的特征矩阵,也就是下面绿色的矩阵

卷积核的参数分析:

为什么是挪2格呢?为什么要按照这种方法滑动?

滑动的步长叫做stride

如果输入是7×7的矩阵,stride = 1的时候,每次滑动1格,filter = 3×3

那么最终得到的矩阵是5×5

如果stride  = 2,每次滑动2格,filter = 3×3

最终的矩阵是3×3

可见,stride越大,得到的特征图就越小。

我们希望stride比较小,那么我们得到的特征矩阵就会大一些,这样得到的特征就会多一些,

但是,效率与精度之间成反比关系,所以stride不能太大,也不能太小。

pad:

在用卷积提取特征值的时候,里面有一个+pad 1 是个什么东西?

先说一下在7×7用3×3,stride = 2 的卷积核提取特征的时候,

①,②,③号窗口中的①被利用了1次,②被利用了2次,③被利用了2次

也就是说,边缘上元素的利用率低于中间元素的利用率

那么②和③对最终的结果贡献要超过①,如何让①(边缘上的元素)也对最终结果贡献大一些呢?

其实,最初的图像是5×5大小的就像下图 黄色部分

pad的意思就是在原始输入图像的边缘上,加上一圈0

使得边缘上的元素利用率提高一些。

为什么要加0,因为这一圈,不是我们的原始输入,只是让他帮我们把边缘点都利用上,

这些0对网络来说,是一点用都没有的。

输入= 7 x 7

Filter = 3 x 3

Pad = 1

stride = 1

Output =7×7

举个例子:

所有filter的大小必须一致。

参数共享:

试想一下,如果讲一个输入为32×32×3的矩阵进行卷积特征提取

filter  = 5×5,共有10个filter,stride = 1 pad =2那么特征矩阵就是一个

28×28×10的矩阵

输入一共有32×32×3 = 3072个权重参数,

filter提取特征一共有5×5×10 = 250个权重参数

如果输入层与卷积层全连接的话那么将会有76万个权重参数

对于计算和效率都是一件非常恐怖的事,

如果在输出层上将多有的参数进行共享(相等)的话,

28×28的每一个格子对应32×32中的5×5的一个区域的权重参数都相同的话,那么只需要5×5×3 = 750个参数

在加10个b参数,那么只需要760个参数就可以了。

个人理解:filter在整个提取过程中不变,所以filter的w权重参数也不变,那么特征矩阵对应于输入的w参数就不会变,特征矩阵的所有点都是用同一个权重参数提取的。

总结:

卷积层主要干了一件什么事?说白了就是特征提取,用权重参数提取输入的特征,得到特征矩阵。

原文地址:https://www.cnblogs.com/Mjerry/p/9796843.html

时间: 2024-11-10 08:59:25

005-卷积神经网络01-卷积层的相关文章

DeepLearning.ai学习笔记(四)卷积神经网络 -- week1 卷积神经网络基础知识介绍

一.计算机视觉 如图示,之前课程中介绍的都是64* 64 3的图像,而一旦图像质量增加,例如变成1000 1000 * 3的时候那么此时的神经网络的计算量会巨大,显然这不现实.所以需要引入其他的方法来解决这个问题. 二.边缘检测示例 边缘检测可以是垂直边缘检测,也可以是水平边缘检测,如上图所示. 至于算法如何实现,下面举一个比较直观的例子: 可以很明显的看出原来6 * 6的矩阵有明显的垂直边缘,通过3 * 3的过滤器(也叫做 "核")卷积之后,仍然保留了原来的垂直边缘特征,虽然这个边缘

【python实现卷积神经网络】卷积层Conv2D实现(带stride、padding)

关于卷积操作是如何进行的就不必多说了,结合代码一步一步来看卷积层是怎么实现的. 代码来源:https://github.com/eriklindernoren/ML-From-Scratch 先看一下其基本的组件函数,首先是determine_padding(filter_shape, output_shape="same"): def determine_padding(filter_shape, output_shape="same"): # No paddin

DeepLearning (六) 学习笔记整理:神经网络以及卷积神经网络

神经网络 神经网络模型 前向传播 反向传播 Neural Networds Tips and Tricks Gradient Check Regularization 激活函数 sigmoid 函数 Tanh Relu 稀疏编码 卷积神经网络 卷积 局部感知 权值共享 多通道卷积 卷积输出大小计算公式 池化pooling后的平移不变性 Dropout Learning rate AdaGrad python 实现 caffe 中的学习率 参考文献 [原创]Liu_LongPo 转载请注明出处[C

深度学习:Keras入门(二)之卷积神经网络(CNN)

说明:这篇文章需要有一些相关的基础知识,否则看起来可能比较吃力. 1.卷积与神经元 1.1 什么是卷积? 简单来说,卷积(或内积)就是一种先把对应位置相乘然后再把结果相加的运算.(具体含义或者数学公式可以查阅相关资料) 如下图就表示卷积的运算过程: (图1) 卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强,并且降低噪音. 1.2 激活函数 这里以常用的激活函数sigmoid为例: 把上述的计算结果269带入此公式,得出f(x)=1 1.3 神经元 如图是一个人工神经元的模型: (

神经网络:卷积神经网络CNN

一.前言 这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积核的参数,从而无监督的产生了最适合的分类特征.这个概括可能有点抽象,我尽量在下面描述细致一些,但如果要更深入了解整个过程的原理,需要去了解DeepLearning. 这篇文章会涉及到卷积的原理与图像特征提取的一般概念,并详细描述卷积神经网络的实现.但是由于精力有限,没有对人类视觉的分层以及机器学习等

浅谈卷积神经网络及matlab实现

前言,好久不见,大家有没有想我啊.哈哈.今天我们来随便说说卷积神经网络. 1卷积神经网络的优点 卷积神经网络进行图像分类是深度学习关于图像处理的一个应用,卷积神经网络的优点是能够直接与图像像素进行卷积,从图像像素中提取图像特征,这种处理方式更加接近人类大脑视觉系统的处理方式.另外,卷积神经网络的权值共享属性和pooling层使网络需要训练的参数大大减小,简化了网络模型,提高了训练的效率. 2 卷积神经网络的架构 卷积神经网络与原始神经网络有什么区别呢,现在我分别给他们的架构图. 图 1 普通深度

深度学习笔记1(卷积神经网络)

深度学习笔记1(卷积神经网络) 在看完了UFLDL教程之后,决定趁热打铁,继续深度学习的学习,主要想讲点卷积神经网络,卷积神经网络是深度学习的模型之一,还有其它如AutoEncoding.Deep Belief Network.Restricted Boltzmann Machine和sparse coding等. 在UFLDL教程中提到了针对大型图像的处理,使用卷积和池化的概念.原因主要对于全连接网络,需要的参数就有很多.比如对于一副1000*1000的图像,hidden layer也为100

神经网络与深度学习笔记 Chapter 6之卷积神经网络

深度学习 Introducing convolutional networks:卷积神经网络介绍 卷积神经网络中有三个基本的概念:局部感受野(local receptive fields), 共享权重( shared weights), 混合( pooling). 与前面的神经网络不同,在这里我们用下图中的矩阵来表示输入神经元. 在cnn中,输入层的一个区域(例如,5 * 5)对应下一层隐含层中的一个神经元,这个区域就是一个局部感受野.如下图所示: 通过在输入矩阵中滑动局部感受野来对应隐含层中的

卷积神经网络(CNN)基础介绍

本文是对卷积神经网络的基础进行介绍,主要内容包含卷积神经网络概念.卷积神经网络结构.卷积神经网络求解.卷积神经网络LeNet-5结构分析.卷积神经网络注意事项. 一.卷积神经网络概念 上世纪60年代.Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念.到80年代.Fukushima在感受野概念的基础之上提出了神经认知机的概念,能够看作是卷积神经网络的第一个实现网络,神经认知机将一个视觉模式分解成很多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,使其

卷积神经网络(CNN)新手指南 1

http://blog.csdn.net/real_myth/article/details/52273930 卷积神经网络(CNN)新手指南 2016-07-29 18:22 Blake 1条评论 卷积神经网络(Convolutional Neural Network,CNN)新手指南 引言 卷积神经网络:听起来像是生物与数学还有少量计算机科学的奇怪结合,但是这些网络在计算机视觉领域已经造就了一些最有影响力的创新.2012年神经网络开始崭露头角,那一年Alex Krizhevskyj在Imag