CNN卷积详解(三)

一、卷积层的计算

4 ∗ * 4的输入矩阵 I I I 和 3 ∗ * 3 的卷积核 K K K:

  • 在步长(stride)为 1 时,输出的大小为 ( 4 − 3 + 1 ) × ( 4 − 3 + 1)

计算公式:
● 输入图片矩阵 I I I 大小: w × w w × w w×w
● 卷积核 K K K k × k k × k k×k
● 步长 S S S s s s
● 填充大小(padding): p p p

o = ( w − k + 2 p ) s + 1 o = \frac{(w − k + 2p )}{s}+1 o=s(wk+2p)+1

输出图片大小为: o × o o × o o×o
● 步长为2,卷积核为33,p=0的卷积情况如下:
在这里插入图片描述
当卷积函数中padding='same’时,会动态调整 p p p 值,确保 o = w o = w o=w ,即保证输入与输出一致。例如:输入是 28
281 输出也为 28281 。
● 步长为1,卷积核为3
3,padding='same’的卷积情况如下:

在这里插入图片描述

🔍实例:
7 ∗ 7 7*7 77 的 input, 3 ∗ 3 3*3 33 的 kernel,无填充(padding=0),步长为1,则 o = ( 7 − 3 ) 1 + 1 o = \frac{(7 − 3 )}{1}+1 o=1(73)+1也即 output size 为 5 ∗ 5 5*5 55
在这里插入图片描述
7 ∗ 7 7*7 77 的 input, 3 ∗ 3 3*3 33 的 kernel,无填充(padding=0),步长为2,则 o = ( 7 − 3 ) 2 + 1 o = \frac{(7 − 3 )}{2}+1 o=2(73)+1也即 output size 为 3 ∗ 3 3*3 33
在这里插入图片描述

二、卷积层运算量的计算

在这里插入图片描述
对于第一个卷积过程涉及的计算量计算过程如下:

首先,我们需要计算卷积层的参数量。对于一个卷积核大小为 k × k k \times k k×k,输入特征图大小为 h × w × c i n h \times w \times c_{in} h×w×cin,输出特征图大小为 h ′ × w ′ × c o u t h' \times w' \times c_{out} h×w×cout的卷积层,其参数量为:

𝑃𝑎𝑟𝑎𝑚 = k 2 × c i n × c o u t k^2 \times c_{in} \times c_{out} k2×cin×cout + c o u t c_{out} cout

其中最后的 c o u t c_{out} cout是bias的数量

引自: [假设卷积核的大小为 k*k, 输入channel为M, 输出channel为N。]
(1)bias为True时:参数数量为: k × k × M × N + N k × k × M × N + N k×k×M×N+N (bias的数量与输出channel的数量是一样的)

(2)bias为False时:参数数量为: k × k × M × N k×k×M×N k×k×M×N

(3)当使用BN时,还有两个可学习的参数α和β,参数量均为N 则参数数量为: k × k × M × N + 3 × N k×k×M×N + 3×N k×k×M×N+3×N

对于本题,输入特征图大小为 100 × 100 × 128 100 \times 100 \times 128 100×100×128,输出特征图大小为 100 × 100 × 256 100 \times 100 \times 256 100×100×256,卷积核大小为 5 × 5 5 \times 5 5×5,且填充为 2,步长为 1,输出通道数为 256。因此,每个卷积层的参数量为:

𝑃𝑎𝑟𝑎𝑚 = 5 2 × 128 × 256 5^2 \times 128 \times 256 52×128×256 + 256 ≈ 8.192 × 1 0 5 8.192 \times 10^5 8.192×105

参数量会计算了,那么 F L O P s FLOPs FLOPs其实也是很简单的,就一个公式:

F L O P s t o t a l FLOPs_{total} FLOPstotal = 𝑃𝑎𝑟𝑎𝑚 × h ′ × w ′ \times h' \times w' ×h×w = 8.192 × 1 0 5 × 100 × 100 8.192 \times 10^5 \times 100 \times 100 8.192×105×100×100= 8.192 × 1 0 9 8.192 \times 10^9 8.192×109

因此,经过具有 256 个输出的 5x5 卷积层之后,输出数据为 100x100x256 的计算量是约为 8.192 × 1 0 9 F L O P s 8.192 \times 10^{9} FLOPs 8.192×109FLOPs

对于第二个卷积过程涉及的计算量计算过程如下:

首先考虑 1x1 卷积层的计算量。套用上面的公式,输入特征图大小为 100 × 100 × 128 100 \times 100 \times 128 100×100×128,输出通道数为 32,因此经过 1x1 卷积层后,输出特征图大小为 100 × 100 × 32 100 \times 100 \times 32 100×100×32,这里的bias值很小我直接省了,计算量为:

F L O P s 1 × 1 FLOPs_{1\times1} FLOPs1×1 = 1 2 × 128 × 32 × 100 × 100 = 4.096 × 1 0 7 1^2 \times 128 \times 32 \times 100 \times 100 = 4.096 \times 10^7 12×128×32×100×100=4.096×107

接下来考虑 5x5 卷积层的计算量,经过 1x1 卷积层后,输出特征图大小为 100 × 100 × 32 100 \times 100 \times 32 100×100×32,输入通道数为 32,输出通道数为 256,卷积核大小为 5x5,填充为 2,步长为 1,这里的bias值很小我直接省了,计算量为:

F L O P s 5 × 5 FLOPs_{5\times5} FLOPs5×5 = 5 2 × 32 × 256 × 100 × 100 = 2.048 × 1 0 9 5^2 \times 32 \times 256 \times 100 \times 100= 2.048 \times 10^{9} 52×32×256×100×100=2.048×109

因此,经过具有 32 个 1x1大小的卷积核的卷积层和具有 256 个5x5大小的卷积核的卷积层之后,输出数据为 100x100x256 的计算量为

F L O P s 1 × 1 + F L O P s 5 × 5 FLOPs_{1\times1} + FLOPs_{5\times5} FLOPs1×1+FLOPs5×5 2.048 × 1 0 9 2.048 \times 10^{9} 2.048×109

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

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

相关文章

微服务系列文章之 SpringBoot 最佳实践

Spring Boot 是一种广泛使用且非常流行的企业级高性能框架。 以下是一些最佳实践和一些技巧,我们可以使用它们来改进 Spring Boot 应用程序并使其更加高效。 Spring Boot 的四大核心 1、自动配置 针对很多Spring应用程序和常见的应用功能,Spring Boo…

攻防世界-fileclude

原题 解题思路 直接展示源码了,flag.php应该存放了flag,在file1与file2都不为空且file2是“hello ctf”时file1将被导入。接下来做法很明显,让file为flag.php,file2为“hello ctf”。“?file1php://filter/readconvert.base64-en…

Open3D 最小二乘拟合空间直线(方法一)

目录 一、算法原理1、空间直线2、最小二乘法拟合二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、空间直线 x −

基于web的停车场收费管理系统/基于springboot的停车场管理系统

摘 要 随着汽车工业的迅猛发展,我国汽车拥有量急剧增加。停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望管理能够达到方便、快捷以及安全的效果。停车场的规模各不相同,对其进行管理的模…

ElasticSearch 数据聚合、自动补全(自定义分词器)、数据同步

文章目录 数据聚合一、聚合的种类二、DSL实现聚合1、Bucket(桶)聚合2、Metrics(度量)聚合 三、RestAPI实现聚合 自动补全一、拼音分词器二、自定义分词器三、自动补全查询四、实现搜索款自动补全(例酒店信息&#xff0…

【rust/egui】(三)看看template的app.rs:序列化、持久化存储

说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:0.22.0eframe版本:0.22.0上一篇:这里 serde app.rs中首先定义了我们的Templ…

Git判断本地是否最新

场景需求 需要判断是否有新内容更新,确定有更新之后执行pull操作,然后pull成功之后再将新内容进行复制到其他地方 pgit log -1 --prettyformat:"%H" HEAD -- . "origin/HEAD" rgit rev-parse origin/HEAD if [[ $p $r ]];thenecho "Is La…

域名解析和代理

购买域名 这里使用腾讯云进行购买。 对域名进行解析 通过添加记录接口对域名进行解析。 此时我们的服务器地址就被解析到域名上了。 我们可以通过以下格式进行访问: [域名]:[对应的项目端口] 效果为下: 通过nginx进行代理 如果我们使用上述的方式进行访问还是…

【hive】hive分桶表的学习

hive分桶表的学习 前言: 每一个表或者分区,hive都可以进一步组织成桶,桶是更细粒度的数据划分,他本质不会改变表或分区的目录组织方式,他会改变数据在文件中的分布方式。 分桶规则: 对分桶字段值进行哈…

react之react-redux的介绍、基本使用、获取状态、分发动作、数据流、reducer的分离与合并等

react之react-redux的介绍、基本使用、获取状态、分发动作、数据流、reducer的分离与合并等 一、react-redux介绍二、React-Redux-基本使用三、获取状态useSelector四、分发动作useDispatch五、 Redux 数据流六、代码结构七、ActionType的使用八、Reducer的分离与合并九、购物挣…

计算机视觉的应用11-基于pytorch框架的卷积神经网络与注意力机制对街道房屋号码的识别应用

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用11-基于pytorch框架的卷积神经网络与注意力机制对街道房屋号码的识别应用,本文我们借助PyTorch,快速构建和训练卷积神经网络(CNN)等模型,…

【Redis从头学-5】Redis中的List数据类型实战场景之天猫热销榜单

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…

git错误记录

露id没有影响,搞得微软不知道我ip一样 git fatal: 拒绝合并无关的历史的错误解决(亲测有效)

mybatis缓存

目的:提高查询效率。 映射语句文件中的所有 select 语句的结果将会被缓存。映射语句文件中的所有 insert、update 和 delete 语句会刷新缓存。缓存会使用最近最少使用算法(LRU, Least Recently Used)算法来清除不需要的缓存。缓存不会定时进行…

Matplotlib绘图知识小结--Python数据分析学习

一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行…

爬虫框架- feapder + 爬虫管理系统 - feaplat 的学习简记

文章目录 feapder 的使用feaplat 爬虫管理系统部署 feapder 的使用 feapder是一款上手简单,功能强大的Python爬虫框架 feapder 官方文档 文档写的很详细,可以直接上手。 基本命令: 创建爬虫项目 feapder create -p first-project创建爬虫 …

根据源码,模拟实现 RabbitMQ - 实现消息持久化,统一硬盘操作(3)

目录 一、实现消息持久化 1.1、消息的存储设定 1.1.1、存储方式 1.1.2、存储格式约定 1.1.3、queue_data.txt 文件内容 1.1.4、queue_stat.txt 文件内容 1.2、实现 MessageFileManager 类 1.2.1、设计目录结构和文件格式 1.2.2、实现消息的写入 1.2.3、实现消息的删除…

如何将常用的jdbc方法封装起来???

你是否还在为每次新建项目连接数据库而烦恼???(教你一次代码,简单完成每次连接) 1.建立maven项目 还没下载安装或者不会建立maven项目的可以看这里哦:maven的下载安装与配置环境变量&#xff0…

javascript期末作业【三维房屋设计】 【源码+文档下载】

1、引入three.js库 官网下载three.js 库 放置目录并引用 引入js文件: 设置场景(scene) (1)创建场景对象 (2)设置透明相机 1,透明相机的优点 透明相机机制更符合于人的视角,在场景预览和游戏场景多有使用…

VALN-hybrid模式

实验拓扑及要求 一、实验思路 1.R1-R3按要求配置,R2不划分vlan使其全部都可以访问 2.交换机和路由器的交换机直连接口设为hybrid模式且R4-R6不带vlan标签访问路由器 3.交换机和交换机的两个直连接口设为hybrid模式且只允许R4-R6所在vlan标签通过 4.R4-R6只允许其…