第 4 章 第 4 章 卷积神经网络-datawhale ai夏令营

        独热向量 y ′ 的长度决 定了模型可以识别出多少不同种类的东西。我们希望 y ′ 和 yˆ 的交叉熵越小越好。

        为了避免过拟合,在做图像识别的时候,考虑到图像本身的特性,并不一定 需要全连接,即不需要每个神经元跟输入的每个维度都有一个权重。

4.1 观察 1:检测模式不需要整张图像

        要知道图像有没有一个鸟嘴,只要看非常小的范围。这些神经元不需要把整张图像当作输入, 只需要把图像的一小部分当作输入,就足以让它们检测某些特别关键的模式是否出现,这是 第 1 个观察。

4.2 简化 1:感受野

        蓝色的神经元的守备范围就是红色正方体框的感受野。这个感受野里面有 3 × 3 × 3 个数值。对蓝色的神经元,它只需要关心这个小范围

        Q: 感受野一定要相连吗?所以通常的感受野都是相连的领地,但如果要设计很奇怪的感受野去解决 很特别的问题,完全是可以的,这都是自己决定的。

        一般同一个感受野会有一组神经元去守备这个范围,比如 64 个或者是 128 个神经元去守 备一个感受野的范围。

我们把左上角的感受野往右移一个步幅,就制造出一个新的守备范围,即新的感受野。 移动的量称为步幅(stride),接下来需要考虑一个问题:感受野超出了图像的范围,怎么办呢?超出范围就做填充(padding),填充就是补值,一般使用零填充(zero padding),超出范围就补 0,其实也有别的补值的方法,比如补整张图像里面所有值的 平均值或者把边界的这些数字拿出来补没有值的地方。4.3 观察 2:同样的模式可能会出现在图像的不同区域

        如图,因为出现在左上角的鸟嘴,它一定落在某一个感受野里面。因 为感受野是盖满整个图像的,所以图像里面所有地方都在某个神经元的守备范围内。假设在 某个感受野里面,有一个神经元的工作就是检测鸟嘴,鸟嘴就会被检测出来。所以就算鸟嘴出 现在中间也没有关系。假设其中有一个神经元可以检测鸟嘴,鸟嘴出现在图像的中间也会被 检测出来。

4.4 简化 2:共享参数

        简单来说就是有一个老师在上课,它可以一个班一个班的上,没必要这么麻烦,直接开个大班上课。所谓参数共享就是两个神经元的权重完全是一样的。

 上面神经元 跟下面神经元守备的感受野是不一样的,但是它们的参数是相同的。虽然两个神经元的参数 是一模一样,但它们的输出不会永远都是一样的,因为它们的输入是不一样的,它们照顾的范 围是不一样的。

如图 4.15 所示,每个感受野都有一组神经元在负责守备,比如 64 个神经元,它们彼此 之间可以共享参数。图 4.16 中使用一样的颜色代表这两个神经元共享一样的参数,所以每个 感受野都只有一组参数,就是上面感受野的第 1 个神经元会跟下面感受野的第 1 个神经元共 用参数,上面感受野的第 2 个神经元跟下面感受野的第 2 个神经元共用参数 · · · · · · 所以每个 感受野都只有一组参数而已,这些参数称为滤波器(filter)。这是第 2 个简化的方法。

4.5 简化 1 和 2 的总结

        全连接网络可以决定它看整张图像还是只看一个范围,如果它只想看一个范围,可以 把很多权重设成 0。全连接层(fully-connected layer,)可以自己决定看整张图像还是一个小范围。感受野加上参数共享就是卷积层 (convolutional layer),用到卷积层的网络就叫卷积神经网络。卷积神经网络的偏差比较大。 但模型偏差大不一定是坏事,因为当模型偏差大,模型的灵活性较低时,比较不容易过拟合。

        接下来通过第 2 个版本的故事来说明卷积神经网络。 一个卷积层里面就是有一排的滤波器,每个滤波器都是一 个 3 × 3 × 通道,其作用是要去图像里面检测某个模式。

        假设这些滤波器里面的数值已经找出来了,如图 4.20 所示,这是一个 6 × 6 的大小的图像。先把滤波器放在图像的左 上角,接着把滤波器里面所有的 9 个值跟左上角这个范围内的 9 个值对应相乘再相加,也就 是做内积,结果是 3。

如果有 64 个滤波器,就可 以得到 64 组的数字。这组数字称为特征映射(feature map)。当一张图像通过一个卷积层 里面一堆滤波器的时候,就会产生一个特征映射。假设卷积层里面有 64 个滤波器,产生的特 征映射就有 64 组数字。特征映射可以看成是另外一张新的图像,只是这个图像的通道不是 RGB 3 个通道,有 64 个通道,每个通道就对应到一个滤波器。

4.6 观察 3:下采样不影响模式检测

        把一张比较大的图像做下采样(downsampling), 把图像偶数的列都拿掉,奇数的行都拿掉,图像变成为原来的 1/4,但是不会影响里面是什么 东西。

4.7 简化 3:汇聚

最大汇聚在每一组里面选一个代表, 选的代表就是最大的一个,如图 4.28 所示。除了最大汇聚,还有平均汇聚(mean pooling), 平均汇聚是取每一组的平均值。

假设要检测的是非常微细的东西,随便做下采样,性能 可能会稍微差一点。所以近年来图像的网络的设计往往也开始把汇聚丢掉,它会做这种全卷 积的神经网络,整个网络里面都是卷积,完全都不用汇聚。

        一般架构就是卷积加汇聚,汇聚是可有可无的,很多人可能会选择不用汇聚。如图 4.30 所示,如果做完几次卷积和汇聚以后,把汇聚的输出做扁平化(flatten),再把这个向量丢进 全连接层里面,最终还要过个 softmax 来得到图像识别的结果。这就是一个经典的图像识别 的网络,里面有卷积、汇聚和扁平化,最后再通过几个全连接层或 softmax 来得到图像识别 的结果。

扁平化就是把图像里面本来排成矩阵样子的东西“拉直”,即把所有的数值“拉直”变成一 个向量。

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

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

相关文章

Python中排序算法之插入排序

1 插入排序算法原理 插入排序算法与《Python中排序算法之选择排序》中提到的选择排序算法类似,也是将要排序的数列分为两个子数列(红色框数列和绿色框数列),不同之处在于插入排序算法从绿色框子数列中逐个选择数字,之…

单片机内存区域划分

目录 一、C 语言内存分区1、栈区2、堆区3、全局区(静态区)4、常量区5、代码区6、总结 二、单片机存储分配1、存储器1.1 RAM1.2 ROM1.3 Flash Memory1.4 不同数据的存放位置 2、程序占用内存大小 一、C 语言内存分区 C 语言在内存中一共分为如下几个区域…

【生日视频制作】农村大马路绿色墙体广告标语喷漆AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程农村大马路墙体广告标语喷漆AE模板改文字素材 怎么如何做的【生日视频制作】农村大马路绿色墙体广告标语喷漆AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出…

【最新消息】211高校,拟撤销测绘工程专业

近日,中国石油大学(北京)教务处发布《关于公示2024年度拟撤销本科专业的通知》,拟撤销音乐学、建筑学、测绘工程等9个本科专业。 通知内容如下: 根据《教育部高等教育司关于开展2024年度普通高等学校本科专业设置工作的…

【STM32】IIC

超级常见的外设通信方式,一般叫做I方C。 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 基本概念 1.1 总线结构 1.2 IIC协议 1.3 软件模拟IIC逻辑 2 AT24C02 2.1 设备地址与…

一次VUE3 使用axios调用萤石云OpenAPI踩坑经历

通过调用萤石云的获取设备列表功能,我们可以根据 ACCESS_TOKEN 获取该用户下的设备列表。 Python 调用接口 根据接口文档[1],使用Python,很轻松就能获取到该列表,代码如下(该代码用于拼接生成vue代码,这是…

Codeforces Round 969 (Div. 2) 题ABC详细题解,包含(C++,Python语言描述)

前言: 首先让我们恭喜tourist创造历史 他是第一,他又是第一,他总是第一,第一个codefores上4000分的,创造一个新的段位:Tourist,他的名字就是一个新的段位,他就是最高的山,最长的河 本…

访问win10共享文件夹:用户或密码不正确 以及 未授予用户在此计算机上的请求登录类型

因为安装的是神州网信政府版,该版本通常包含更严格的安全策略和访问控制,设置了共享文件夹后,访问共享文件夹时出现错误。 1、首先报错:用户或密码不正确 将》网络访问:本地账户的共享和安全模型,修改为&a…

开源通用验证码识别OCR —— DdddOcr 源码赏析(二)

文章目录 前言DdddOcr分类识别调用识别功能classification 函数源码classification 函数源码解读1. 分类功能不支持目标检测2. 转换为Image对象3. 根据模型配置调整图片尺寸和色彩模式4. 图像数据转换为浮点数据并归一化5. 图像数据预处理6. 运行模型,返回预测结果 …

Python测试之测试覆盖率统计

本篇承接上一篇 Python测试框架之—— pytest介绍与示例,在此基础上介绍如何基于pytest进行测试的覆盖率统计。 要在使用 pytest 进行测试时检测代码覆盖率,可以使用 pytest-cov 插件。这个插件是基于 coverage.py,它能帮助你了解哪些代码部…

人工智能和机器学习5 (复旦大学计算机科学与技术实践工作站)语言模型相关的技术和应用、通过OpenAI库,调用千问大模型,并进行反复询问等功能加强

前言 在这个日新月异的AI时代,自然语言处理(NLP)技术正以前所未有的速度改变着我们的生活方式和工作模式。作为这一领域的佼佼者,OpenAI不仅以其强大的GPT系列模型引领风骚,还通过其开放的API接口,让全球开…

哈工大-操作系统L30

文件使用磁盘的实现 fd文件描述符 buf内存缓冲区 count读写字符的个数 file->inode获得inode file_write写文件 inode映射表 读写的内存缓冲区buf,file字符流的位置200-212,根据inode提供的索引号找到块号,根据buf形成请求队列,再放入电梯队列 fseek调整读…

Jenkins安装使用详解,jenkins实现企业级CICD流程

文章目录 一、资料1、官方文档 二、环境准备1、安装jdk172、安装maven3、安装git4、安装gitlab5、准备我们的springboot项目6、安装jenkins7、安装docker8、安装k8s(可选,部署节点)9、安装Harbor10、准备带有jdk环境的基础镜像 三、jenkins实…

力扣1235.规划兼职工作

力扣1235.规划兼职工作 动态规划 二分 将所有工作按照结束时间排序f[i]表示前i个工作可获取的最大收益状态转移:取第i个工作,f[i] profit[i] f[j],其中j为结束时间小于i的开始时间的最大数不取第i个工作,f[i] f[i-1]可以通过二…

低代码开发平台:重塑未来软件开发格局的关键力量

低代码开发平台正以前所未有的速度改变着软件开发的面貌,通过最小化手动编码,让用户能够迅速构建应用程序。随着企业对敏捷性和创新能力的追求日益增强,这类平台的需求激增。展望未来,技术进步与市场动态将引领低代码开发进入新的…

大阪OSAKA分子泵TG710MTG730TG1130TD7111TG2810TD3211TG3413手侧接线图

大阪OSAKA分子泵TG710MTG730TG1130TD7111TG2810TD3211TG3413手侧接线图

window下kafka3启动多个

准备工作 我们先安装好kafka,并保证启动成功,可参考文章Windows下安装Kafka3-CSDN博客 复制kafka安装文件 kafka3已经内置了zookeeper,所以直接复制就行了 修改zookeeper配置文件 这里我们修改zookeeper配置文件,主要是快照地址…

【MyBatis】MyBatis的一级缓存和二级缓存简介

目录 1、一级缓存 1.1 我们在一个 sqlSession 中,对 User 表根据id进行两次查询,查看他们发出sql语句的情况。 1.2 同样是对user表进行两次查询,只不过两次查询之间进行了一次update操作。 1.3 一级缓存查询过程 1.4 Mybatis与Spring整…

switch语句和while循环

switch语句和while循环 switch语句break的用法default的用法switch语句中的case和default的顺序问题 while语句while语句的执行流程while语句的具体例子 switch语句 switch 语句是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重 的 else if…

滚动视图ScrollView

activity_scroll_view.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_pare…