IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 04.卷积神经网络(第一周) -> 正文阅读

[人工智能]04.卷积神经网络(第一周)

卷积运算

边缘检测

处理大量的数据运算,你需要进行卷积计算,它是卷积神经网络中非常重要的一块。
在这里插入图片描述

使用边缘检测作为入门样例
过滤器,卷积运算用 * 表示。
用3 x 3的过滤器对其进行卷积。这个可以做垂直边缘检测

所以在编程练习中,你会使用一个叫conv_forward的函数。如果在tensorflow下,这个函数叫tf.conv2d。在其他深度学习框架中,在后面的课程中,你将会看到Keras这个框架,在这个框架下用Conv2D实现卷积运算。

为什么这个可以做垂直边缘检测呢?
在这里插入图片描述

当你用一个3×3过滤器进行卷积运算的时候,这个3×3的过滤器可视化为下面这个样子,在左边有明亮的像素,然后有一个过渡,0在中间,然后右边是深色的。卷积运算后,你得到的是右边的矩阵。

在这个例子中,在输出图像中间的亮处,表示在图像中间有一个特别明显的垂直边缘。从垂直边缘检测中可以得到的启发是,因为我们使用3×3的矩阵(过滤器),所以垂直边缘是一个3×3的区域,在这个6×6图像的中间部分,就被视为一个垂直边缘,卷积运算提供了一个方便的方法来发现图像中的垂直边缘。



学习如何区分正边和负边,这实际就是由亮到暗与由暗到亮的区别,也就是边缘的过渡。

垂直边缘检测与水平边缘检测
在这里插入图片描述



在这里插入图片描述

通过卷积运算,如果得到的数是正数,那么就表示是从明到暗的过度,如果是负数,那么就是从暗到明的过度。


同时,过滤器的矩阵也不是固定的,可以有很多选择
在这里插入图片描述
同时,也可以把过滤器的九个数当成参数来运算。
在这里插入图片描述

所以将矩阵的所有数字都设置为参数,通过数据反馈,让神经网络自动去学习它们,我们会发现神经网络可以学习一些低级的特征,例如这些边缘的特征。

一个基本的卷积操作—padding

(自我理解:指定p的值)
我们在之前视频中看到,如果你用一个3×3的过滤器卷积一个6×6的图像,你最后会得到一个4×4的输出,也就是一个4×4矩阵。那是因为你的3×3过滤器在6×6矩阵中,只可能有4×4种可能的位置。这背后的数学解释是,如果我们有一个 n × n {\text{n}} \times {\text{n}} n×n的图像,用 f × f f \times f f×f过滤器做卷积,那么输出的维度就是 ( n ? f + 1 ) × ( n ? f + 1 ) (n - f + 1) \times (n - f + 1) (n?f+1)×(n?f+1)。在这个例子里是 6 ? 3 + 1 = 4 6 - 3 + 1 = 4 6?3+1=4,因此得到了一个4×4的输出。

两个问题
1.缺点是每次做卷积操作,你的图像就会缩小
2.丢掉了图像边缘位置的许多信息
解决方案
在卷积操作之前填充这幅图像
   填充方案
     1. Valid卷积:意味着不填充
     2. Same卷积:你填充后,你的输出大小和输入大小是一样的。
     用p个像素填充后,得到的就是 ( n + 2 p ? f + 1 ) × ( n + 2 p ? f + 1 ) (n +2p- f + 1) \times (n+2p - f + 1) (n+2p?f+1)×(n+2p?f+1)的矩阵, p = ( f ? 1 ) 2 p = \frac{{(f - 1)}}{2} p=2(f?1)?f得是奇数

卷积的步长

也就是每次移动几格
如果你用一个f×f的过滤器卷积一个n×n的图像,你的padding为p,步幅为s,在这个例子中s=2,你会得到一个输出,因为现在你不是一次移动一个步子,而是一次移动s个步子,输出于是变为 ( n?+? 2 p + f s + 1 ) × ( n?+? 2 p + f s + 1 ) (\frac{{{\text{n + }}2p + f}}{s} + 1) \times (\frac{{{\text{n + }}2p + f}}{s} + 1) (sn?+?2p+f?+1)×(sn?+?2p+f?+1)

如果商不是一个整数怎么办?在这种情况下,我们向下取整。
在这里插入图片描述

对立体进行卷积

在这里插入图片描述
图像的通道数必须和过滤器的通道数匹配
在这里插入图片描述
为了计算这个卷积操作的输出,你要做的就是把这个3×3×3的过滤器先放到最左上角的位置,这个3×3×3的过滤器有27个数,27个参数就是3的立方。依次取这27个数,然后乘以相应的红绿蓝通道中的数字。先取红色通道的前9个数字,然后是绿色通道,然后再是蓝色通道,乘以左边黄色立方体覆盖的对应的27个数,然后把这些数都加起来,就得到了输出的第一个数字。

如果要计算下一个输出,你把这个立方体滑动一个单位,再与这27个数相乘,把它们都加起来,就得到了下一个输出,以此类推。
在这里插入图片描述
甚至可以检测单个通道的边缘,设置一个过滤器 ( 1 0 ? 1 1 0 ? 1 1 0 ? 1 ) {\begin{pmatrix} 1&0&{ - 1}\\ 1&0&{ - 1}\\ 1&0&{ - 1} \end{pmatrix}} ???111?000??1?1?1????
只需要把剩下两个通道的值全部设置为0就好了。这就是一个检测垂直边界的过滤器,但只对红色通道有用。

如果我们不仅仅想要检测垂直边缘怎么办?如果我们同时检测垂直边缘和水平边缘,还有45°倾斜的边缘,还有70°倾斜的边缘怎么做?换句话说,如果你想同时用多个过滤器怎么办?

在这里插入图片描述
总结:在这里插入图片描述

如何构建卷积神经网络的卷积层

有10个过滤器,神经网络的一层是3×3×3,因此每个过滤器有27个参数,也就是27个数。然后加上一个偏差,现在我们有10个,加在一起是28×10,也就是280个参数。

不论输入图片有多大,1000×1000也好,5000×5000也好,参数始终都是280个。用这10个过滤器来提取特征,如垂直边缘,水平边缘和其它特征。即使这些图片很大,参数却很少,这就是卷积神经网络的一个特征,叫作“避免过拟合”

各参数代表意义,以及表达式

在这里插入图片描述

构建一个简单卷积神经网路

在这里插入图片描述
一开始定义了,高度和宽度、通道数。
第一层我们用一个3×3的过滤器,定义了f,计算出下一层的输出。
要决定过滤器的大小、步幅、padding以及使用多少个过滤器。



在这里插入图片描述

  • 一个是卷积层
  • 一个是池化层
  • 最后一个是全连接层

池化层(Pooling layers)

除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。

在这里插入图片描述

先举一个池化层的例子,然后我们再讨论池化层的必要性。假如输入是一个4×4矩阵,用到的池化类型是最大池化(max pooling)。执行最大池化的树池是一个2×2矩阵。执行过程非常简单,把4×4的输入拆分成不同的区域,我把这个区域用不同颜色来标记。对于2×2的输出,输出的每个元素都是其对应颜色区域中的最大元素值。


所以最大化运算的实际作用就是,如果在过滤器中提取到某个特征,那么保留其最大值。

,它有一组超参数,但并没有参数需要学习。实际上,梯度下降没有什么可学的,一旦确定了f(过滤器)和s(步幅),它就是一个固定运算,梯度下降无需改变任何值。
常用的参数值为f=2 s=2,其效果相当于高度和宽度缩减一半。

平均池化:选取的不是每个过滤器的最大值,而是平均值。
在这里插入图片描述

卷积神经网络的示例

全连接:常规的神经网络,每层跟每层全部相连那种基本操作。
在这里插入图片描述

在这里插入图片描述

  1. 第一层使用过滤器大小为5×5,步幅是1,padding是0,过滤器个数为6,那么输出为28×28×6。将这层标记为CONV1,它用了6个过滤器,增加了偏差,应用了非线性函数,可能是ReLU非线性函数,最后输出CONV1的结果。
  2. 然后构建一个池化层,最大池化使用的过滤器为2×2,步幅为2,表示层的高度和宽度会减少一半。因此,28×28变成了14×14,通道数量保持不变,所以最终输出为14×14×6,将该输出标记为POOL1。
    在这里插入图片描述
  3. 我们再为它构建一个卷积层,过滤器大小为5×5,步幅为1,这次我们用10个过滤器,最后输出一个10×10×10的矩阵,标记为CONV2。
  4. 然后做最大池化,超参数f=2,s=2。高度和宽度会减半,最后输出为5×5×10,标记为POOL2,这就是神经网络的第二个卷积层,即Layer2。
  5. 5×5×16矩阵包含400个元素,现在将POOL2平整化为一个大小为400的一维向量。我们可以把平整化结果想象成这样的一个神经元集合,然后利用这400个单元构建下一层。下一层含有120个单元,这就是我们第一个全连接层,标记为FC3。这400个单元与120个单元紧密相连,这就是全连接层。它很像我们在第一和第二门课中讲过的单神经网络层,这是一个标准的神经网络。维度为120×400。这就是所谓的“全连接”,因为这400个单元与这120个单元的每一项连接,还有一个偏差参数。最后输出120个维度,因为有120个输出。
    在这里插入图片描述
  6. 然后我们对这个120个单元再添加一个全连接层,这层更小,假设它含有84个单元,标记为FC4。
  7. 最后,用这84个单元填充一个softmax单元。如果我们想通过手写数字识别来识别手写0-9这10个数字,这个softmax就会有10个输出。

常规做法是,尽量不要自己设置超参数,而是查看文献中别人采用了哪些超参数

现在,我想指出的是,随着神经网络深度的加深,高度 n h {n_h} nh?和宽度 n w {n_w} nw?通常都会减少,前面我就提到过,从32×32到28×28,到14×14,到10×10,再到5×5。所以随着层数增加,高度和宽度都会减小,而通道数量会增加,从3到6到16不断增加,然后得到一个全连接层。

在神经网络中,另一种常见模式就是一个或多个卷积后面跟随一个池化层,然后一个或多个卷积层后面再跟一个池化层,然后是几个全连接层,最后是一个softmax。这是神经网络的另一种常见模式。

为什么使用卷积?

在这里插入图片描述

和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接。

  • 一是参数共享。观察发现,特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域。
  • 第二个方法是使用稀疏连接,这个0是通过3×3的卷积计算得到的,它只依赖于这个3×3的输入的单元格,右边这个输出单元(元素0)仅与36个输入特征中9个相连接。而且其它像素值都不会对输出产生任影响,这就是稀疏连接的概念。

神经网络可以通过这两种机制减少参数,以便我们用更小的训练集来训练它,从而预防过度拟合。

标准卷积模型

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 16:51:20  更:2021-10-01 16:54:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:37:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码