第7章——深度学习入门(鱼书)

第7章 卷积神经网络

本章的主题是卷积神经网络( Convolutional Neural Network CNN )。CNN 被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以 CNN 为基础。本章将详细介绍 CNN 的结构,并用Python 实现其处理内容。

7.1 整体结构

首先,来看一下 CNN 的网络结构,了解 CNN 的大致框架。 CNN 和之前介绍的神经网络一样,可以像乐高积木一样通过组装层来构建。不过,CNN 中新出现了卷积层( Convolution 层)和池化层( Pooling 层)。卷积层和池化层将在下一节详细介绍,这里我们先看一下如何组装层以构建 CNN 。之前介绍的神经网络中, 相邻层的所有神经元之间都有连接,这称为全连接(fully-connected) 。另外,我们用 Affine 层实现了全连接层。如果使用这个 Affine 层,一个 5 层的全连接的神经网络就可以通过图 7-1 所示的网络结构来实现。
如图 7-1 所示,全连接的神经网络中, Affine 层后面跟着激活函数 ReLU层(或者 Sigmoid 层)。这里堆叠了 4 层“ Affine-ReLU ”组合,然后第 5 层是Affine 层,最后由 Softmax 层输出最终结果(概率)。
那么, CNN 会是什么样的结构呢?图 7-2 CNN 的一个例子。
如 图 7-2 所 示, CNN 中新增了 Convolution 层 和 Pooling 层。 CNN 的层的连接顺序是“Convolution - ReLU -(Pooling)”(Pooling层有时会被省略) 。这可以理解为之前的“ Affi ne - ReLU ”连接被替换成了“ Convolution -ReLU - Pooling )”连接。
还需要注意的是,在图 7-2 CNN 中,靠近输出的层中使用了之前的“ Affine - ReLU ”组合。此外,最后的输出层中使用了之前的“ Affine -Softmax ”组合。这些都是一般的 CNN 中比较常见的结构。

7.2 卷积层

CNN 中出现了一些特有的术语,比如填充、步幅等。此外,各层中传递的数据是有形状的数据(比如, 3 维数据),这与之前的全连接网络不同,因此刚开始学习 CNN 时可能会感到难以理解。本节我们将花点时间,认真学习一下 CNN 中使用的卷积层的结构。

7.2.1 全连接层存在的问题

之前介绍的全连接的神经网络中使用了 全连接层(Affine层) 。在全连接层中,相邻层的神经元全部连接在一起,输出的数量可以任意决定。全连接层存在什么问题呢?那就是数据的形状被“忽视”了。
比如,输入数据是图像时,图像通常是高、长、通道方向上的 3 维形状。但是,向全连接层输入时,需要将 3 维数据拉平为 1 维数据。实际上,前面提到的使用了 MNIST 数据集的例子中,输入图像就是 1 通道、高 28 像素、长 28 像素的( 1 , 28 , 28 )形状,但却被排成 1 列,以 784 个数据的形式输入到最开始的Affine 层。
图像是 3 维形状,这个形状中应该含有重要的空间信息。比如,空间上邻近的像素为相似的值、 RBG 的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等, 3 维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以 3 维数据的形式接收输入数据,并同样以 3 维数据的形式输出至下一层。因此,在 CNN 中,可以(有可能)正确理解图像等具有形状的数据。
另外, CNN 中,有时将卷积层的输入输出数据称为特征图(featuremap) 。其中,卷积层的输入数据称为 输入特征图 input feature map ),输出数据称为 输出特征图 output feature map )。本书中将“输入输出数据”和“特征图”作为含义相同的词使用。

7.2.2 卷积运算

卷积层进行的处理就是卷积运算。卷积运算相当于图像处理中的“滤波器运算”。在介绍卷积运算时,我们来看一个具体的例子(图 7-3 )。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457224.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录24】93.复原 IP 地址 78.子集 90.子集II

目录 93.复原IP地址题目描述参考代码 78.子集题目描述参考代码 90.子集II题目描述参考代码 93.复原IP地址 题目描述 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RichText组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RichText组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、RichText组件 鸿蒙(HarmonyOS)富文本组件,…

sql实现将某一列下移一行

问题 实现如下图所示的 max_salary 下移一行 方法:使用开窗函数 select max_salary, max(max_salary) over(order by max_salary asc rows between 1 PRECEDING and 1 PRECEDING) max_salary_plus from jobs

【如何学习CAN总线测试】——Vector VH6501干扰仪测试BusOff

系列文章目录 【如何学习CAN总线测试】系列文章目录汇总 文章目录 系列文章目录前言一、环境搭建1.硬件环境2.软件环境3.原理 二、测试方法1.打开Disturbance(CAN)工程2.使能 VH65013.MainConfigPanel面板4.TriggerConfiguration配置5.Sequence Configuration配置6.干扰结果 前…

论文阅读-面向公平性的分布式系统负载均衡机制

摘要 当一组自利的用户在分布式系统中共享多个资源时,我们面临资源分配问题,即所谓的负载均衡问题。特别地,负载均衡被定义为将负载分配到分布式系统的服务器上,以便最小化作业响应时间并提高服务器的利用率。在本文中&#xff0…

JRT监听程序

本次设计避免以往设计缺陷,老的主要为了保持兼容性,在用的设计就不好调了。 首先,接口抽象时候就不在给参数放仪器ID和处理类了,直接放仪器配置实体,接口实现想用什么属性就用什么属性,避免老方式要扩参数时…

Mac上软件闪退(意外退出)的解决方法

mac苹果电脑上运行软件会意外退出,怎么办,可以试试下面的方法,亲测可行! 第一种方法: 1、打开访达,进入应用程序目录,找到闪退的软件图标,在软件图标上右键选择“显示简介”&#…

Linux系统调试课:硬件断点

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在linux内核编程中,经常会遇到由于内存被篡改,例如 buffer overflow,野指针,write after free等。查找分析此类问题非常的麻烦。 一、什么是硬件断点 硬件断点,是Linux内核中是一种被ptrace和内核内调试器使用调试…

26 使用 Samba 实现文件共享

Samba 文件共享服务 Samba 服务程序现在已经成为在 Linux 系统与Windows 系统之间共享文件的最佳选择 详细配置请转Samba服务 安装 [rootlocalhost ~]# yum install samba -ySamba 服务程序的主配置文件,只有 37 行。 第 5~8 行参数中所提到的 cups…

leetcode 算法 69.x的平方根(python版)

需求 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#…

Python HTTP隧道在远程通信中的应用:穿越网络的“魔法门”

在这个数字化时代,远程通信就像是我们日常生活中的“魔法门”,让我们可以随时随地与远方的朋友、同事或服务器进行交流。而在这扇“魔法门”的背后,Python HTTP隧道技术发挥着举足轻重的作用。 想象一下,你坐在家里的沙发上&…

基于 NXP S32K344 的汽车通用评估板方案

S32K3xx 系列是 NXP 基于 ARMCortex-M7 的汽车工业级 MCU,符合 ISO26262 ASIL-D 汽车功能安全等级,支持 ASIL B/D 安全应用,提供了一个可扩展的平台,具有下一代安全性、可扩展性、连接性和低功耗特性。适用于可能会在严酷环境下工…