当前位置: 首页 > news >正文

动手学深度学习——5.卷积神经网络

1.卷积神经网络特征

现在,我们将上述想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络架构。

  1. 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。

  2. 局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。

卷积神经网络是包含卷积层的一类特殊的神经网络。 在深度学习研究社区中,𝑉被称为卷积核(convolution kernel)或者滤波器(filter),亦或简单地称之为该卷积层的权重,通常该权重是可学习的参数。 当图像处理的局部区域很小时,卷积神经网络与多层感知机的训练差异可能是巨大的:以前,多层感知机可能需要数十亿个参数来表示网络中的一层,而现在卷积神经网络通常只需要几百个参数,而且不需要改变输入或隐藏表示的维数。 参数大幅减少的代价是,我们的特征现在是平移不变的,并且当确定每个隐藏活性值时,每一层只包含局部的信息。 以上所有的权重学习都将依赖于归纳偏置。当这种偏置与现实相符时,我们就能得到样本有效的模型,并且这些模型能很好地泛化到未知数据中。 但如果这偏置与现实不符时,比如当图像不满足平移不变时,我们的模型可能难以拟合我们的训练数据。

2.多输入通道

当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数的卷积核,以便与输入数据进行互相关运算。假设输入的通道数为𝑐𝑖,那么卷积核的输入通道数也需要为𝑐𝑖。如果卷积核的窗口形状是𝑘ℎ×𝑘𝑤,那么当𝑐𝑖=1时,我们可以把卷积核看作形状为𝑘ℎ×𝑘𝑤的二维张量。

然而,当𝑐𝑖>1时,我们卷积核的每个输入通道将包含形状为𝑘ℎ×𝑘𝑤的张量。将这些张量𝑐𝑖连结在一起可以得到形状为𝑐𝑖×𝑘ℎ×𝑘𝑤的卷积核。由于输入和卷积核都有𝑐𝑖个通道,我们可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将𝑐𝑖的结果相加)得到二维张量。这是多通道输入和多输入通道卷积核之间进行二维互相关运算的结果。

3.多输出通道

到目前为止,不论有多少输入通道,我们还只有一个输出通道。然而,正如我们在 6.1.4.1节中所讨论的,每一层有多个输出通道是至关重要的。在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。直观地说,我们可以将每个通道看作对不同特征的响应。而现实可能更为复杂一些,因为每个通道不是独立学习的,而是为了共同使用而优化的。因此,多输出通道并不仅是学习多个单通道的检测器。

用𝑐𝑖和𝑐𝑜分别表示输入和输出通道的数目,并让𝑘ℎ和𝑘𝑤为卷积核的高度和宽度。为了获得多个通道的输出,我们可以为每个输出通道创建一个形状为𝑐𝑖×𝑘ℎ×𝑘𝑤的卷积核张量,这样卷积核的形状是𝑐𝑜×𝑐𝑖×𝑘ℎ×𝑘𝑤。在互相关运算中,每个输出通道先获取所有输入通道,再以对应该输出通道的卷积核计算出结果。

4.1×1卷积层

1×1卷积,即𝑘ℎ=𝑘𝑤=1,看起来似乎没有多大意义。 毕竟,卷积的本质是有效提取相邻像素间的相关特征,而1×1卷积显然没有此作用。 尽管如此,1×1仍然十分流行,经常包含在复杂深层网络的设计中。下面,让我们详细地解读一下它的实际作用。

因为使用了最小窗口,1×1卷积失去了卷积层的特有能力——在高度和宽度维度上,识别相邻元素间相互作用的能力。 其实1×1卷积的唯一计算发生在通道上。

图展示了使用1×1卷积核与3个输入通道和2个输出通道的互相关计算。 这里输入和输出具有相同的高度和宽度,输出中的每个元素都是从输入图像中同一位置的元素的线性组合。 我们可以将1×1卷积层看作在每个像素位置应用的全连接层,以𝑐𝑖个输入值转换为𝑐𝑜个输出值。 因为这仍然是一个卷积层,所以跨像素的权重是一致的。 同时,1×1卷积层需要的权重维度为𝑐𝑜×𝑐𝑖,再额外加上一个偏置。

5.池化层

池化层具有双重目的:降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。

在处理多通道输入数据时,汇聚层在每个输入通道上单独运算,而不是像卷积层一样在通道上对输入进行汇总。 这意味着汇聚层的输出通道数与输入通道数相同。 下面,我们将在通道维度上连结张量XX + 1,以构建具有2个通道的输入。

相关文章:

  • LLM大模型ChatGLM-6B 本地部署与运行
  • 算法工程师面试题一
  • Git配置笔记
  • 环境配置|PyCharm——Pycharm本地项目打包上传到Github仓库的操作步骤
  • 未来的社交标杆:如何通过AI让Facebook更加智能化?
  • 【网络文明】关注网络安全
  • vim网络和安全的操作及shell的使用
  • 防火墙之双机热备篇
  • Java Spring Boot的三层结构
  • Kafka Producer发送消息流程之分区器和数据收集器
  • 电阻有哪些参数呢
  • 13 个最受欢迎的技术写作工具
  • Proteus + Keil单片机仿真教程(六)多位LED数码管的动态显示
  • 镜像与容器
  • PostgreSQL 慢 SQL 排查
  • MySQL数据库运维之数据恢复
  • PHP的类修饰符与访问修饰符
  • Python连接Oracle
  • rc-form之最单纯情况
  • React-redux的原理以及使用
  • SpingCloudBus整合RabbitMQ
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 动态魔术使用DBMS_SQL
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 官方解决所有 npm 全局安装权限问题
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 码农张的Bug人生 - 初来乍到
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • Android开发者必备:推荐一款助力开发的开源APP
  • Java总结 - String - 这篇请使劲喷我
  • MyCAT水平分库
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​人工智能书单(数学基础篇)
  • #pragma预处理命令
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十二)Flink Table API
  • (一) storm的集群安装与配置
  • (一)Java算法:二分查找
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)创业的注意事项
  • (转)关于多人操作数据的处理策略
  • .NET 8.0 中有哪些新的变化?
  • .NET Core 发展历程和版本迭代
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET框架设计—常被忽视的C#设计技巧
  • /3GB和/USERVA开关
  • ??eclipse的安装配置问题!??
  • [1181]linux两台服务器之间传输文件和文件夹
  • [20171106]配置客户端连接注意.txt