卷积神经网络笔记

本文详细介绍了卷积神经网络的原理和应用,包括卷积层的构建、参数数量计算、卷积步长与填充的影响,以及三维卷积的理解。通过实例展示了卷积层如何从输入图像中提取特征,形成激活层。此外,还探讨了卷积网络的典型架构,包括多个卷积层、池化层和全连接层的组合,以及如何确定网络的超参数。
摘要由CSDN通过智能技术生成

这段时间在学习 吴恩达深度学习课程第四课 — 卷积神经网络 这门课程,在看视频学习到这一部分时,有的知识点写的时候不太容易,尤其是有很多画图的地方,所以在博客中记录这一部分的知识点笔记。希望能够尽可能的详细吧...

视频链接:1.7 单层卷积神经网络

                    1.8 简单卷积网络示例    

参考:深度学习笔记

目录

# 相关知识点

* padding

* 卷积步长

* 三维卷积

1 单层卷积网络(某一卷积层的工作原理)

1.1 构建卷积神经网络的卷积层

1.2 一层的参数数量

1.3 卷积层的各种标记总结

2 简单卷积网络示例 

2.1 卷积神经网络的一个典型范例

2.2 卷积神经网络中层的类型

3 池化层

4 卷积神经网络示例



# 相关知识点

* padding

* 卷积步长

向下取整这个原则实现的方式是,你只在蓝框完全包括在图像或填充完的图像内部时,才对它进行运算。如果有任意一个蓝框移动到了外面,那你就不要进行相乘操作,这是一个惯例。你的3×3的过滤器必须完全处于图像中或者填充之后的图像区域内才输出相应结果,这就是惯例。

* 三维卷积


1 单层卷积网络(某一卷积层的工作原理)

1.1 构建卷积神经网络的卷积层

如何构建卷积神经网络的卷积层?(卷积神经网络中某一卷积层的工作原理

下面来看个例子。

上节课,我们已经讲了如何通过两个过滤器卷积处理一个三维图像,并输出两个不同的4×4矩阵。假设使用第一个过滤器进行卷积,得到第一个4×4矩阵。使用第二个过滤器进行卷积得到另外一个4×4矩阵。最终各自形成一个卷积神经网络层,然后增加偏差,它是一个实数,通过Python的广播机制给这16个元素都加上同一偏差。然后应用非线性函数,为了说明,它是一个非线性激活函数ReLU,输出结果是一个4×4矩阵。

对于第二个4×4矩阵,我们加上不同的偏差,它也是一个实数,16个数字都加上同一个实数,然后应用非线性函数,也就是一个非线性激活函数ReLU,最终得到另一个4×4矩阵。然后重复我们之前的步骤,把这两个矩阵堆叠起来,最终得到一个4×4×2的矩阵。

我们通过计算,从6×6×3的输入推导出一个4×4×2矩阵,它是卷积神经网络的一层,把它映射到标准神经网络中四个卷积层中的某一层或者一个非卷积神经网络中。

卷积神经网络的一层

注意:前向传播中一个操作就是,其中,执行非线性函数得到。这里的输入是,也就是 x,这些过滤器用变量表示。在卷积过程中,我们对这27个数进行操作,其实是27×2,因为我们用了两个过滤器,我们取这些数做乘法。实际执行了一个线性函数,得到一个4×4的矩阵。卷积操作的输出结果是一个4×4的矩阵,它的作用类似于,也就是这两个4×4矩阵的输出结果,然后加上偏差。

图中蓝色边框标记的部分就是应用激活函数ReLU之前的值,它的作用类似于,最后应用非线性函数,得到的这个4×4×2矩阵,成为神经网络的下一层,也就是激活层。

这就是的演变过程,首先执行线性函数,然后所有元素相乘做卷积,具体做法是运用线性函数再加上偏差,然后应用激活函数ReLU。这样就通过神经网络的一层把一个6×6×3的维度演化为一个4×4×2维度的,这就是卷积神经网络的一层。

a^[0]到a^[1]的演变过程

示例中我们有两个过滤器,也就是有两个特征,因此我们才最终得到一个4×4×2的输出。但如果我们用了10个过滤器,而不是2个,我们最后会得到一个4×4×10维度的输出图像,因为我们选取了其中10个特征映射,而不仅仅是2个,将它们堆叠在一起,形成一个4×4×10的输出图像,也就是

1.2 一层的参数数量

为了加深理解,我们来做一个练习。假设你有10个过滤器,而不是2个,神经网络的一层是3×3×3,那么,这一层有多少个参数呢?我们来计算一下,每一层都是一个3×3×3的矩阵,因此每个过滤器有27个参数,也就是27个数。然后加上一个偏差,用参数b表示,现在参数增加到28个。上一页幻灯片里我画了2个过滤器,而现在我们有10个,加在一起是28×10,也就是280个参数。

请注意一点,不论输入图片有多大,1000×1000也好,5000×5000也好,参数始终都是280个。用这10个过滤器来提取特征,如垂直边缘,水平边缘和其它特征。即使这些图片很大,参数却很少,这就是卷积神经网络的一个特征,叫作“避免过拟合”。你已经知道到如何提取10个特征,可以应用到大图片中,而参数数量固定不变,此例中只有28个,相对较少。

一层的参数数量

1.3 卷积层的各种标记总结

这一层是卷积层,用表示过滤器大小,我们说过过滤器大小为 f × f,上标 [l] 表示 l 层中过滤器大小为 f × f。通常情况下,上标 [l] 用来标记 l 层。用来标记padding的数量,padding数量也可指定为一个valid卷积,即无padding。或是same卷积,即选定padding,如此一来,输出和输入图片的高度和宽度就相同了。用标记步幅。

这一层的输入会是某个维度的数据,表示为 n×n×n_c ,n_c表示某层上的颜色通道数。我们要稍作修改,增加上标[l-1],,因为它是上一层的激活值。

此例中,所用图片的高度和宽度都一样,但它们也有可能不同,所以分别用上下标H和W来标记,即。那么在第 l 层,图片大小为,l 层的输入就是上一层的输出,因此上标要用[l-1]。神经网络这一层中会有输出,它本身会输出图像。其大小为,这就是输出图像的大小。

卷积层的各种标记

 

那么通道数量又是什么?这些数字从哪儿来的?我们来看一下。

输出图像也具有深度,通过上一个示例,我们知道它等于该层中过滤器的数量,如果有2个过滤器,输出图像就是4×4×2,它是二维的,如果有10个过滤器,输出图像就是4×4×10。输出图像中的通道数量就是神经网络中这一层所使用的过滤器的数量。如何确定过滤器的大小呢?我们知道卷积一个6×6×3的图片需要一个3×3×3的过滤器,因此过滤器中通道的数量必须与输入中通道的数量一致。因此,输出通道数量就是输入通道数量,所以过滤器维度等于

 该如何确定权重参数,即参数W呢?

 

 最后我们看看偏差参数,每个过滤器都有一个偏差参数,它是一个实数。偏差包含了这些变量,它是该维度上的一个向量。后续课程中我们会看到,为了方便,偏差在代码中表示为一个的四维向量或四维张量。

常用的卷积符号

卷积有很多种标记方法,这是我最常用的卷积符号。大家在线搜索或查看开源代码时,关于高度、宽度和通道的顺序并没有完全统一的标准卷积,所以在查看GitHub上的源代码或阅读一些开源实现的时候,你会发现有些作者会采用把通道放在首位的编码标准,有时所有变量都采用这种标准。

实际上在某些架构中,当检索这些图片时,会有一个变量或参数来标识计算通道数量和通道损失数量的先后顺序。只要保持一致,这两种卷积标准都可用。很遗憾,这只是一部分标记法,因为深度学习文献并未对标记达成一致,但课上我会采用这种卷积标识法,按高度,宽度和通道损失数量的顺序依次计算。

我知道,忽然间接触到这么多新的标记方法,你可能会说,这么多怎么记呢?别担心,不用全都记住,你可以通过本周的练习来熟悉它们。而这节课我想讲的重点是,卷积神经网络的某一卷积层的工作原理,以及如何计算某一卷积层的激活函数,并映射到下一层的激活值。了解了卷积神经网络中某一卷积层的工作原理,我们就可以把它们堆叠起来形成一个深度卷积神经网络,我们下节课再讲。


2 简单卷积网络示例 

上节课,我们讲了如何为卷积网络构建一个卷积层。今天我们看一个深度卷积神经网络的具体示例,顺便练习一下我们上节课所学的标记法。

2.1 卷积神经网络的一个典型范例

假设你有一张图片,你想做图片分类或图片识别,把这张图片输入定义为 x,然后辨别图片中有没有猫,用0或1表示,这是一个分类问题,我们来构建适用于这项任务的卷积神经网络。针对这个示例,我用了一张比较小的图片,大小是39×39×3,这样设定可以使其中一些数字效果更好。所以,即高度和宽度都等于39,,即0层的通道数为3。

第一个卷积层,过滤器大小3×3,过滤器数量10

假设还有另外一个卷积层,这次我们采用的过滤器是5×5的矩阵。在标记法中,神经网络下一层的 f=5,即,步幅为2,即padding为0,即,且有20个过滤器。所以其输出结果会是一张新图像,这次的输出结果为17×17×20,因为步幅是2,维度缩小得很快,大小从37×37减小到17×17,减小了一半还多,过滤器是20个,所以通道数也是20,17×17×20即激活值的维度。因此

第二个卷积层,过滤器大小5×5,过滤器数量20

我们来构建最后一个卷积层,假设过滤器还是5×5,步幅为2,即,计算过程我跳过了,最后输出为7×7×40,假设使用了40个过滤器。padding为0,40个过滤器,最后结果为7×7×40。到此,这张39×39×3的输入图像就处理完毕了,为图片提取了7×7×40个特征。

第三个卷积层,过滤器大小5×5,过滤器数量40

这张39×39×3的输入图像就处理完毕了,为图片提取了7×7×40个特征,计算出来就是1960个特征。然后对该卷积进行处理,可以将其平滑或展开成1960个单元。平滑处理后可以输出一个向量,其填充内容是logistic回归单元还是softmax回归单元,完全取决于我们是想识图片上有没有猫,还是想识别K种不同对象中的一种,用表示最终神经网络的预测输出。明确一点,最后这一步是处理所有数字,即全部的1960个数字,把它们展开成一个很长的向量。为了预测最终的输出结果,我们把这个长向量填充到softmax回归函数中。

对该卷积进行平滑处理

这是卷积神经网络的一个典型范例,设计卷积神经网络时,确定这些超参数比较费工夫。要决定过滤器的大小、步幅、padding以及使用多少个过滤器。这节课要掌握的一点是,随着神经网络计算深度不断加深,通常开始时的图像也要更大一些,初始值为39×39,高度和宽度会在一段时间内保持一致,然后随着网络深度的加深而逐渐减小,从39到37,再到17,最后到7。而通道数量在增加,从3到10,再到20,最后到40。在许多其它卷积神经网络中,你也可以看到这种趋势。关于如何确定这些参数,后面课上我会更详细讲解,这是我们讲的第一个卷积神经网络示例。

2.2 卷积神经网络中层的类型

一个典型的卷积神经网络通常有三层,一个是卷积层,我们常常用Conv来标注。上一个例子,我用的就是CONV。还有两种常见类型的层,我们留在后两节课讲。一个是池化层,我们称之为POOL最后一个是全连接层,用FC表示。虽然仅用卷积层也有可能构建出很好的神经网络,但大部分神经望楼架构师依然会添加池化层和全连接层。幸运的是,池化层和全连接层比卷积层更容易设计。后两节课我们会快速讲解这两个概念以便你更好的了解神经网络中最常用的这几种层,你就可以利用它们构建更强大的网络了。

卷积神经网络通常有三层

 

本周后几节课,我们会学习如何训练这些卷积神经网络。不过在这之前,我还要简单介绍一下池化层和全连接层。然后再训练这些网络,到时我会用到大家熟悉的反向传播训练方法。那么下节课,我们就先来了解如何构建神经网络的池化层。

3 池化层

4 卷积神经网络示例

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值