全连接层、卷积层、深度可分离卷积的参数量计算

2023-11-10

一、全连接层参数的计算:

若输入大小为32×32×3的图片,第一层全连接层有500个节点,则地一层全连接网络的个参数量为:

32×32×3×500+500    

约为150万个参数,参数量多,导致计算速度缓慢且容易造成过拟合
于是卷积操作便横空出世

二、卷积层参数的计算:

P_num = K_h × K_w × C_in × C_out + C_out (公式1)
或:P_num = (K_h × K_w × C_in + 1) × C_out
其中 :
K_h 和 K_w表示卷积核(过滤器)的大小
C_in表示输入的特征通道数
C_out表示输出的特征通道数

输出节点时,每个卷积核只有一个偏置项,做完每个通道的矩阵点乘,再对每个通道的点乘结果求和,最后再加上偏置项

三、卷积后图像大小的计算:

Out_length = [(In_length - filter_length +1) / stride_length] (方括号表示向上取整,不会打取整的符号)
Out_width = [(In_width - filter_width +1) / stride_width] (方括号表示向上取整,不会打取整的符号)

四、卷积层连接数的计算:

公式:P_num × Out_length × Out_width (公式2)
即参数个数 × 输出图像长 × 输出图像宽

五、举例进行计算:

前一层:大小 6@14×14 卷积核大小:5×5
后一层:16@10×10

卷积层参数个数:根据公式1有:(5×5×6+1)×16
连接数 : 根据公式2有: (5×5×6+1)×16 × 10 ×10
连接数计算:后一层共有 16 × 10 ×10 个节点,每一个节点与前一层的5 × 5 × 6个节点相连接(也就是对应前一层的这些区域),然后每一个节点连接一个偏置项。即为:(5×5×6+1)×16 × 10 ×10,而前面的(5×5×6+1)×16 正好为参数的个数,因此有了公式2

六、深度可分离卷积:

参考博客:https://blog.csdn.net/qq_21997625/article/details/87106152
由于最近笔试经常会被问道深度可分离卷积的参数量和传统卷积的参数量的计算,在这里详细解读一下深度可分离卷积的过程以及参数量的计算:

参数量公式:(K_h × K_w ×1 + 1)× C_in + (1×1× C_in + 1)× C_out
连接数公式:分两部分计算

直接上例子吧:

深度分离卷积示例: 输入图片大小为(6,6,3)

1、原卷积操作用(4,4,3,5)的卷积(卷积核大小为4x4,卷积核通道为3,卷积核数量为5,stride=1,
padding=0
输出的特征尺寸为 : (6-4)/1+1=3, 即输出的特征映射为(3,3,5)
参数个数为:(4×4×3+1)×5 = 245
连接数为:245 × 3 × 3 = 2205

2、对于深度分离卷积,把标准卷积(4,4,3,5)分解为:

深度卷积部分:大小为(4,4,1,3) ,作用在输入的每个通道上,输出特征映射为(3,3,3)
逐点卷积部分:大小为(1,1,3,5),作用在深度卷积的输出特征映射上,得到最终输出为(3,3,5)

(1)深度卷积部分
输入有3个通道,对应着有3个大小为(4,4,1) 的深度卷积核,卷积结果共有3个大小为(3,3,1) ,我们按顺序将这卷积按通道排列得到输出卷积结果(3,3,3) 。
深度卷积部分参数为:3 ×(4×4+1)
(2)逐点卷积部分
参数为:(1×1×3 +1)×5 = 20
3、总结:深度可分离卷积也就是将一个(K_h , K_w , C_in ,C_out)的卷积拆分成了先用一个
(K_h , K_w , 1 ,C_in)和一个(1 ,1 , C_in ,C_out)的卷积,在大大减少参数量的情况下精度也没有下降多少。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全连接层、卷积层、深度可分离卷积的参数量计算 的相关文章

  • Altium Designer 21的使用(二):电阻电容模型的创建

    TIPS 元件符号是元件在原理图上的表现形式 主要由元件边框 管脚 包括管脚序号和管脚名称 元件名称及元件说明组成 通过放置的管脚来建立电气连接关系 元件符号中的管脚序号是和电子元件实物的管脚一一对应的 在创建元件时 图形不一定和实物完全一
  • java io流读取文件_java的几种IO流读取文件方式

    一 超类 字节流 InputStream 读入流 OutputStream 写出流 字符流 Reader 字符 读入流 Writer 字符写出流 二 文件操作流 字节流 FileInputStream FileOutputStream 字符
  • tensorflow码源-运行流程

    tensorflow码源 运行流程 简介 通过分析用户构建的计算是如何在tensorflow中运行的 了解tensorflow中的基本元素和op kernel和device之间的交互 用户程序 matrix1 tf constant 3 3
  • 如何实现‘请在微信客户端打开链接’

    想要实现请在微信客户端打开链接 在代码中加入以下代码即可 code style font family none display block line height 18px border none code
  • 【编程之路】面试必刷TOP101:动态规划(72-77,Python实现)

    面试必刷TOP101 动态规划 72 77 Python实现 72 连续子数组的最大和 小试牛刀 72 1 动态规划 因为数组中有正有负有0 因此每次遇到一个数 要不要将其加入我们所求的连续子数组里面 是个问题 有可能加入了会更大 有可能加
  • js阻止冒泡事件

    div class open div style width 50 margin 0 auto height 5rem div class open back img style width 2 25rem src image public
  • JAVA switch case 穿透问题

    1 前提 其实开发中很少会用到switch 一般更倾向于if else 但是最近接手的项目 前人写的代码都用switch 但是我一直以来对switch 的理解就跟if一样 然后项目运用的时候才发现这玩意居然还有穿透问题 2 实践 publi
  • 米家扩展程序初始化超时,GCC编译器警告:扩展初始化程序列表仅在c ++ 0x中可用...

    Using this member initialization StatsScreen StatsScreen GameState State level m Level level I get the following warning
  • Eclipse新版本注释的中文大小不一,缩进有问题. Eclipse新版本的坑

    notepad 可以关闭打开标签 左边所有 右边所有 而eclipse的旧版本却没有 就去找了新版本的Eclipse 来用 结果就踩坑了 Eclipse IDE 2020 09 需要jdk11 Eclipse IDE 2020 06 可以用
  • shiro多项目跳转用户身份失效问题排查

    shiro多项目跳转用户身份失效问题排查 1 身份失效问题 最近在项目中遇到过一个问题 统一登录系统中有各个子系统的模块 可点击子系统模块进行跳转 如下图所示 如上图 当用户点击子系统B新窗口打开时 实现跳转成功 当再回到原统一登录系统页面
  • iocrl如何从user space调用到 kernel space,

    iocrl如何从user space调用到 kernel space 还有调用的流程 图1 在上述的调用流程中 do vfs ioctl 会处理一些内核自定义的cmd type 如果我们自定义的cmd type和系统定义的重复 会导致 该自
  • SQL 测试

    您的回答 1 SQL 指的是 您的回答 Structured Query Language 2 哪个 SQL 语句用于从数据库中提取数据 您的回答 SELECT 3 哪条 SQL 语句用于更新数据库中的数据 您的回答 UPDATE 4 哪条
  • LintCode之128 哈希函数

    题目来源 哈希函数 题目描述 在数据结构中 哈希函数是用来将一个字符串 或任何其他类型 转化为小于哈希表大小且大于等于零的整数 一个好的哈希函数可以尽可能少地产生冲突 一种广泛使用的哈希函数算法是使用数值33 假设任何字符串都是基于33的一
  • 一文解释python中的实例方法,类方法和静态方法作用和区别是啥?该如何使用

    我们都知道 python类中有三种常见的方法 分别是实例方法 类方法和静态方法 那么这几个方法到底有什么作用 它们之间有什么区别 该如何使用 带着这些问题 下面我们就来了解下这三种方法 1 方法介绍 2 代码说明 若我们要实现一个学生的类
  • ==,Object.equals(), Objects.equals(), Objects.deepEquals 使用注意

    相等判断时需注意 基本数据类型之间 可使用 包装类型之间尽量不要使用 包装类数值超过 127 128 引用类型地址不同 在 127 128之间时 翻阅底层源码发现 使用的是缓存的值 使用Object equals 做内容比较时 把常量 或可
  • IM即时通讯实现原理

    即时通讯 Instant Messenger 简称IM 软件多是基于TCP IP和UDP进行通讯的 TCP IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议 前 者是以数据流的形式 将传输数据经分割 打包后 通过两台机器之间建立起
  • Spyder 快捷键大全(转)

    主要介绍了Spyder常见的快捷键 从spyder的配置表中导出 中文名称为直译 常用快捷键 快捷键 中文名称 Ctrl R 替换文本 Ctrl 1 单行注释 单次注释 双次取消注释 Ctrl 4 块注释 单次注释 双次取消注释 F5 运行
  • Python之argparse.ArgumentParser

    一 介绍 argparse是python用于解析命令行参数和选项的标准模块 一方面可以接收运行代码时用户传入的各种参数 比如传入数据路径 另一方面也可以规范的定义程序中用到的参数 比如定义epoch及batch size等 二 使用 新建t
  • [javascript]canvas 热点区域图,框选区域并在区域显示热点

    需求 设置人员需要在图片上框选区域 并且后台针对区域读出数据后显示热点 做法 直接上代码 作者 jww dragon 163 com 依赖 jquery var goog function tag this hotpoint this sq
  • 时序预测

    时序预测 Python实现XGBoost极限梯度提升树股票价格预测 目录 时序预测 Python实现XGBoost极限梯度提升树股票价格预测 预测效果 基本描述 环境配置 模型描述 程序设计 参考资料 预测效果 基本描述 Python实现X

随机推荐

  • 【VBScript恶搞代码】关不掉的窗口

    前言 编写vbs脚本没有什么特定要求 只要有系统带了WSH环境就可以 千言万语汇成一句话 有手就行 效果图 操作步骤 先打开记事本 win R打开运行窗口 输入notepad 回车 在记事本上粘贴下列内容 WScript Echo 嘿 谢谢
  • 【算法

    Leetcode206 反转链表 给你单链表的头节点 head 请你反转链表 并返回反转后的链表 示例 1 输入 head 1 2 3 4 5 输出 5 4 3 2 1 示例 2 输入 head 1 2 输出 2 1 示例 3 输入 hea
  • 通过CPUID指令读取处理器信息

    一 CPUID简介 CPUID操作码是一个面向x86架构的处理器补充指令 它的名称派生自CPU识别 作用是允许软件通过CPUID指令读取处理器的详细信息 二 CPUID基本原理 CPUID有很多function号 每个号代表一个功能 CPU
  • nginx 之 Http 请求处理的11个阶段

    处理的11个阶段 POST HEAD realip SERVER REWRITE rewrite FIND CONFIG REWRITE rewrite POST REWRITE PREACCESS limit conn limit req
  • 通过使用Mybatis插件来实现数据的分页功能

    目录 背景 一 SpringBoot的后端 1 手动拼接SQL来实现 2 使用Mybatis插件来实现 二 Vue cli的前端 请求响应跟踪 三 在使用Mybatis插件进行多表查询 表数大于2 出现的问题 1 SQL解决 2 后端查询方
  • 毕设教学:Yolo v5 (v6.1)解析(二)

    Yolo v5 v6 1 解析 二 本文对YOLOv5模型的detect py文件内容进行了详细阐述 笔者以后会定期讲解关于模型的其他的模块与相关技术 笔者也建立了一个关于目标检测的交流群 781334731 大家也可扫描底部图片加入 欢迎
  • java软件官网下载汇总——JDK,eclipse,mysql,maven,idea,Git,oracle

    说明 最近换了一台电脑 所以很多软件都要重新安装 边安装边思考我不如把所有软件的下载官网记录下来 以后就不用到处找了 直接在这篇博文里看就行了 这篇博文没有具体的下载链接 只是官网 因为如果真的不记得进了官网怎么点 那确实也应该复习一下 就
  • 学习1(Linunx操作系统_前期安装)

    1 安装虚拟机 vm12 我下载的是这个版本 vmware workstation full 12 1 0 3272444 exe 下载地址 https www xinsaisai com vmware workstation full 1
  • keep-alive源码解析及实现原理

    keep alive源码 vue 2 6 10 在src core components keep alive js中 代码分析 export default name keep alive abstract true 抽象组件 props
  • 解决Mac应用程序软件不出现在Launchpad里面的方法

    新装了几个软件 可是打开Lauchpad之后却在里面找不到 尝试重置Launchpad方式 1 分别输入终端命令即可 rm Library Application Support Dock db killall Dock
  • ASP.NET 清除模式窗口数据缓存

    使用模式窗口showModalDialog 弹出页面在asp net中经常用到 用的最多的就是点击 修改 按钮 弹出修改页面 修改成功之后 关闭修改页面 刷新父页面 目前存在的一个问题是 刷新完父页面之后 再点击修改按钮弹出修改页面 修改页
  • Java 枚举

    枚举的每一个成员变量就是枚举类型自身的一个实例 枚举的实例在编译的时候就能确定枚举类型有多少个 实例对象 每一个枚举都继承自java lang Enum类 枚举的每个成员默认都是 public static final 的 当定义一个 枚举
  • gf框架使用sqlite3数据库后交叉编译cgo适配arm64-linux

    gf框架使用sqlite3数据库后交叉编译cgo适配arm64 linux 文章目录 gf框架使用sqlite3数据库后交叉编译cgo适配arm64 linux 1 前言 2 解决方案 3 wsl Windows交叉编译cgo工程 3 1
  • 期末考试复习笔记(标红表示重要)

    目录 相关系数的比较 数据的类型 回归模型的统计检验与统计意义 参数检验 非参数检验 统计距离 量表 李克特量表 权重 聚类图分析 聚类分析简介 聚类的用途 聚类方法 两步聚类法 TwoStep Cluster 箱线图分析 中心位置的作用
  • Redis数据类型-List

    一 概述 Java中 数组 Arraylist 链表 linkedList 数组的特点 根据索引取值速度是极快的 和数据量的大小无关 数组的增删改查 效率极低 数据量越大 效率越低 链表的特点 链表的元素增删 效率极高 和数据量的大小无关
  • 超详细!Jmeter性能测试(一)

    Jmeter 性能测试 一 首先开发会给你一个接口文档 我们这边是做支付方面的 所以我们要求给下单支付接口做下压测 由于我们这边接口都是有加密参数的 所以都是直接在JAVA工程包里直接跑的 因为这次是做压测 所以我们要用上Jmeter这个工
  • VC++ OpenCV4.x二维码识别

    自OpenCV4 x开始 二维码识别已经悄然进入 再也不用看zbar脸色了 以下是官网发布的源码 include opencv2 objdetect hpp include opencv2 imgproc hpp include openc
  • Node.Js篇 NodeJs使用MongoDB

    目录 介绍 概念解析 安装 启动时注意事项 NodeJs操作Mongo 介绍 MongoDB 是一个基于分布式文件存储的数据库 由 C 语言编写 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB 是一个介于关系数据库和
  • 酷开科技打造更好体验服务用户

    智能电视以其海量资源 智慧大屏 高清画质等特点在国内快速普及 然而 随着用户量的增加 用户群体的需求多元化 导致消费者对智能电视的应用要求越来越高 不仅希望智能电视内容丰富 最好还能拥有 多合一 的功能 好在 一些科技企业关注到市场痛点 致
  • 全连接层、卷积层、深度可分离卷积的参数量计算

    一 全连接层参数的计算 若输入大小为32 32 3的图片 第一层全连接层有500个节点 则地一层全连接网络的个参数量为 32 32 3 500 500 约为150万个参数 参数量多 导致计算速度缓慢且容易造成过拟合 于是卷积操作便横空出世