CNN 网络结构简介

news2024/7/4 5:05:16

本文通过整理李宏毅老师的机器学习教程的内容,介绍 CNN(卷积神经网络)的网络结构。

CNN 网络结构, 李宏毅


CNN 主要应用在图像识别(image classification, 图像分类)领域。

通常,输入的图片大小相同,如 100 × 100 100 \times 100 100×100,输出的分类为 one-hot 形式:
输入输出

输入数据的格式为 tensor(张量),维数为:宽度 × \times × 高度 × \times × channel(频道)数:
输入数据

理解方式一:神经元视角(neuron version story)


如果使用全连接(fully connected network)的网络结构,参数量会非常大:
全连接网络

考虑到图片识别问题的特性,其实并不需要全连接的网络,下面基于此进行简化。

感受野


图像识别本质上是对图像中的各个部位进行识别,如一只鸟的喙、眼和爪等,因此每个神经元(neuron)只需输入图片的一部分即可,即感受野(receptive field):

感受野

值得注意的是:

  • 不同神经元的感受野可以重叠;
  • 同一个感受野也可以有多个神经元用以侦测不同的特征:
    感受野可重叠

此外,感受野还可以有一些其他的操作:

  • 可以有大有小;
  • 可以只考虑部分 channel,在通常的 CNN 中不常见,但在 network corporation 时会遇到;
  • 可以是长方形;
  • 理论上甚至可以不相连,但是要想清楚这样做的理由。

总之,感受野可以任意设计。

最经典的感受野的设计如下:

  • 考虑所有 channel,因此只需要输入宽度和高度即可,宽度和高度合称为 kernel size;
  • kernal size 往往不会很大,如 3 × 3 3 \times 3 3×3,后面会解释如何对更大范围的模式(pattern)进行识别;
  • 同一个感受野会有多个神经元;
  • 感受野的移动步长(stride)不要太大,通常为 1 或 2,希望感受野之间有重叠,防止感受野交界上的模式被遗漏;
  • 对于位于边界上、超出范围的感受野,需要对超出的位置进行补值(padding),通常补 0,也有其他补值方法,如补全图的平均值,或补边界值等;
  • 感受野整体要覆盖全图。

参数共享


由于同样的模式可能出现在图片的不同位置:
不同位置的相同模式

于是侦测不同位置的相同模式的神经元,其对应的参数相同,即参数共享:
参数共享

侦测相同位置的神经元不能共享参数。

共享的参数叫做滤波器(filter):
filter

综上所述,以上两种 CNN 对全连接网络的简化方式:
两种简化方式


理解方式二:滤波器视角(filter version story)


将每个卷积层(convolutional layer)视为若干滤波器扫过整张图片,去识别对应的模式:
卷积层的 filter

filter 模式识别

同一卷积层的所有滤波器输出的所有数据叫做 feature map,它可以看成是另一张图片,只不过 channel 数量由 3 个(RGB)变成了滤波器的数量,因此下一层的滤波器的高度需要设为上一层的滤波器数量:
feature map

当网络更深时,同样大小的感受野所看到的范围会越来越大,例如,同样是 3 × 3 3 \times 3 3×3 的感受野,在第二层就可以看到原图片中 5 × 5 5 \times 5 5×5 的范围:
更大的范围

此外,第一种理解方式中的参数共享,即是把滤波器扫过整张图片的过程。

两种理解方式总结如下:
两种理解方式的总结

有关 pooling


pooling 即 subsampling,是把一张大的图片缩小,以减少运算量的过程。
常见的 pooling 方式为 max pooling,即保留最大值:
max pooling 1

max pooling 2

通常是做一层或几层卷积后,做一次 pooling,整体网络结构如下:
含 pooling 的整体网络结构

但近年来,pooling 用得越来越少,甚至可有可无,因为其操作会影响性能,而运算资源又越来越强。


AlphaGo 的网络结构


AlphaGo 的网络结构

其中,rectifier nonlinearity 即为 ReLU。

此外,AlphaGo 没有使用 pooling。


局限性


CNN 无法处理图片放大缩小或旋转的情形,解决方案有:

  • 数据增强(data augmentation),即把训练资料的每张图片都截成小块再放大,并把每张图片都旋转,使网络看到放大和旋转后的图片;
  • 使用 spatial transformer layer。

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

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

相关文章

【Oracle】[INS-30131]执行安装程序验证所需的初始设置失败。

这里写目录标题 一、问题描述1 报错内容1.1 无法从节点“kotin”检索 exectask 的版本1.2 工作目录"xxx"无法在节点"kotin"上使用 2 相关环境2.1 安装软件2.2 安装系统 3 解决思路分析 二、解决方案1 方案一、 满足验证条件 - 不换系统1.1 第一步、检查文件…

uniapp开发微信小程序的巨坑

1、不能使用v-show 2、关于插槽的巨坑 这里我真的是摸索了好久。 小程序版本: hbuilderx版本: 其他版本不知道会不会出现以下情况。 如果组件中带有插槽,那么使用插槽时有以下要注意: 1、如果子组件通过slot,向外…

MySQL数据xtrabackup物理备份方法

目录 一、物理备份的方式二、xtrabackup物理备份1.安装xtrabackup2.完整备份/恢复流程3.增量备份流程4.差异备份流程5.物理备份总结 一、物理备份的方式 1.完整备份 每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的…

ADC读取数据进入死循环

结论优先:程序并发处理不当引起寄存器标志位被非预期清除,引起进入死循环。 现象:在进行AD读取数据时,有一个等待ADC转换完成的标志位,概率性卡死在while等待ADC数据转换完成。 static err_t gd32_adc_read(struct d…

Pytorch入门实例的分解写法

数据集是受教育年限和收入,如下图 代码如下 import torch import numpy as np import matplotlib.pyplot as plt import pandas as pddata pd.read_csv(./Income.csv)X torch.from_numpy(data.Education.values.reshape(-1,1).astype(np.float32)) Y torch.from_numpy(data…

python 查找波峰和波谷

import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks# 生成示例信号 x np.array([1, 3, 7, 1, 2, 6, 0, 4, 3, 2, 5, 1])# 寻找波峰 peaks, _ find_peaks(x)# 寻找波谷(使用信号的负数形式) valleys, _ find_pe…

炒冷饭、语雀崩、领会员-我最主观的一段文字

目录 什么是语雀 语雀,为每一个人提供优秀的文档和知识库工具。 作为一个程序员来说,我们需要一块位置去存储我们正在学习的技术、过往踩过的坑以及正在做的事情,如果我们需要记录每天的TO-DO List,或者需要按照四象限工作法亦或…

瑞虎9:外观够虎,内饰够豪,起售价15.29万

随着更多家庭习惯了全家自驾出行,国内消费者对SUV车型越来越感兴趣。随着生活水平的提高和旅游观念的普及,家庭出行已成为人们生活中的常态。每个家庭成员都希望在出行时能够享受到舒适的感觉,这成为购车时的重要考虑因素。因此,车…

码住!双11支付宝小程序云云市集,享骨折优惠最强购物清单,抽奖赢iPhone 15 Pro!

活动介绍 一年一度的双11狂欢即将拉开序幕! 如今的双11不仅是清空购物车的年度盛宴 对于个人开发者和企业来说 也是采购云产品的绝佳时机! 今年有什么需要抄作业的购物清单呢? 支付宝小程序云的首次大规模促销活动必须码住&#xff01…

C++初阶(六)类和对象

文章目录 一、 拷贝构造函数1、概念2、特性 二、 赋值运算符重载1、运算符重载2、赋值运算符重载1、赋值运算符重载格式2、 赋值运算符只能重载成类的成员函数不能重载成全局函数3、 用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐…

[ROS系列]ORB_SLAM3错误版本(仅记录)

背景: 1、设备:pc;旭日派x3(后续会加上,目前只有pc) 2、环境:Ubuntu20.04;ROS2(Foxy)​​​​​​​ ros2机器人foxy版用笔记本摄像头跑单目orb_slam3-CSD…

142.环形链表

环形链表问题是链表中的经典问题,接下来是142. 环形链表 II - 力扣(LeetCode) 的描述和详解 。 题目描述: 题目分析: situation1:当链表没有环形结构时,返回空: situation2:当链…

【html】图片多矩形框裁剪

说明 由于项目中需要对一个图片进行多选择框进行裁剪&#xff0c;所以特写当前的示例代码。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><base href"/"><title>图片裁剪</tit…

【广州华锐互动】智能家居设计3D虚拟还原系统

随着科技的飞速发展&#xff0c;人们对家居生活的需求也在不断提高。智能家居作为一种新兴的生活方式&#xff0c;正逐渐成为现代人追求的理想居住环境。而智能家居设计3D虚拟还原系统&#xff0c;正是为了让人们更好地了解和体验智能家居带来的便捷与舒适&#xff0c;让未来生…

Latex笔记

1. Section 编号方式(数字、字母、罗马)&计数器计数形式修改 IEEE模板中Section的编号是罗马数字&#xff0c;要是改投其他刊物的话可能得用阿拉伯数字&#xff0c;所以可以在导言部分做如下修改&#xff08;放在导言区宏包调用之后&#xff09;&#xff1a; \renewcomma…

AMD大规模裁员15%? 赔偿N+7?官方回应来了 | 百能云芯

近日&#xff0c;美国芯片大厂AMD遭传出在中国进行大规模裁员15%的消息&#xff0c;引发网友关注。 对此&#xff0c;AMD官方26日回应称&#xff0c;「网络传闻失实」&#xff0c;该公司并没有进行大规模裁员。 相反地&#xff0c;AMD是进行的「小幅度」的组织架构优化和重组&a…

使用node创建Web服务

创建Web服务 基于 Node.js 环境&#xff0c;使用内置 http 模块&#xff0c;创建 Web 服务程序 需求&#xff1a;引入 http 模块&#xff0c;使用相关语法&#xff0c;创建 Web 服务程序&#xff0c;响应返回给请求方一句提示 ‘hello&#xff0c;world’ 步骤&#xff1a; 引…

高速电路设计----第三章(3)LVPECL、CML逻辑电平详解

一、LVPECL介绍 LVPECL是ECL电平的正电源、低电压版本。 ECL电平是指发射极耦合逻辑&#xff08;Emitter Coupled Logic&#xff09;,与TTL相同&#xff0c;ECL的主体结构由三极管组成&#xff0c;不同的是 ECL内部的三极管工作在非饱和状态&#xff08;即截止或者放大状态&…

你能用原来的塞子保存你未喝完的葡萄酒吗?

这是一个工作日的晚上&#xff0c;你发现自己在商店的过道里寻找一瓶葡萄酒。在您的高贵探索中&#xff0c;您可能已经注意到了装饰在每个独特瓶子顶部的各种瓶盖&#xff0c;有些是软木塞&#xff0c;有些是一个简单的螺旋盖。在最终决定了一个有趣的外观黑皮诺葡萄酒带回家品…

python安装包失败 安装scipy包

最近在配深度学习环境&#xff0c;安装好了conda、CUDA、cuDNN&#xff0c;运行之后报错&#xff0c;没有scipy包。 试了很多方法&#xff1a; 用命令行pip、conda install 在pycharm下载包 在环境中添加包 都失败了 要么直接ERROR&#xff0c;要么超时 问了师兄 需要在conda环…