深度学习卷积神经网络参数计算难点重点

 

目录

一、卷积层图像输出尺寸

 二、池化层图像输出尺寸

三、全连接层输出尺寸

四、卷积层参数数量

五、全连接层参数数量

 六、代码实现与验证


 以LeNet5经典模型为例子并且通道数为1

LeNet5网络有7层

​ 1.第1层:卷积层

​ 输入:原始的图片像素矩阵(长度、宽度、通道数),大小为32×32×1;

​ 参数:滤波器尺寸为5×5,深度为6,不使用全0填充,步长为1;

​ 输出:特征图,大小为28×28×6。

​ 分析:因为没有使用全0填充,所以输出尺寸 = 32 - 5 + 1 = 28,深度与滤波器深度一致,为6。

​ 2.第2层:池化层

​ 输入:特征图,大小为28×28×6;

​ 参数:滤波器尺寸为2×2,步长为2;

​ 输出:特征图,大小为14×14×6。

​ 3.第3层:卷积层

​ 输入:特征图,大小为14×14×6;

​ 参数:滤波器尺寸为5×5,深度为16,不使用全0填充,步长为1;

​ 输出:特征图,大小为10×10×16。

​ 分析:因为没有使用全0填充,所以输出尺寸 = 14 - 5 + 1 = 10,深度与滤波器深度一致,为16。

​ 4.第4层:池化层

​ 输入:特征图,大小为10×10×16;

​ 参数:滤波器尺寸为2×2,步长为2;

​ 输出:特征图,大小为5×5×16。

​ 5.第5层:全连接层

​ 输入节点个数:5×5×16 = 400;

​ 参数个数:5×5×16×120+120 = 48120;

​ 输出节点个数:120。

​ 6.第6层:全连接层

​ 输入节点个数:120;

​ 参数个数:120×84+84 = 10164;

​ 输出节点个数:84。

​ 7.第7层:全连接层

​ 输入节点个数:84;

​ 参数个数:84×10+10 = 850;

​ 输出节点个数:10。

​ 由于使用的是MNIST数据集,图片大小是28×28×1的,1代表通道数,也就是灰度图像,所以后面代码实现是用28×28的并进行讲解。

​ 上面没看懂没关系,公式来了。

一、卷积层图像输出尺寸

​ 定义如下:

​ O = 输出图像的尺寸。

​ I = 输入图像的尺寸。

​ K = 卷积层的核尺寸

​ N = 核数量

​ S = 移动步长

​ P = 填充数

​ 公式:

 

 

(数字0和字母O很像,请忽略掉这个小小问题)

​ 示例:MNIST手写数字图片大小是28×28×1的,LeNet5第一层卷积核个数为5,故输出图像尺寸为:

 故输出的图像大小为:24×24×6. (一个卷积核对应一个通道

 二、池化层图像输出尺寸

​ 定义如下:

​ O=输出图像的尺寸。

​ I=输入图像的尺寸。

​ S=移动步长

​ PS=池化层尺寸

​ 公式:

​ 示例:第一层的输出为24×24×6,故输出图像尺寸为:

​ 

​ 故输出的图像大小为:12×12×6. (池化层不改变通道个数

三、全连接层输出尺寸

​ 全连接层输出向量长度等于神经元的数量。

四、卷积层参数数量

​ 在CNN中,每层有两种类型的参数:权重weights 和偏置项biases.总参数数量为所有weights和biases的总和.

​ 定义如下:

​ WC = 卷积层的weights数量

​ BC = 卷积层的biases数量

​ PC = 所有参数的数量

​ K = 核尺寸

​ N = 核数量

​ C = 输入图像通道数

​ 卷积层中,核的深度等于输入图像的通道数.于是每个核有K*K个参数.并且有N个核.由此得出以下的公式:

​ 示例:LeNet5第一层卷积层,卷积核大小为5*5,并且有6个,输入图像大小为28×28×1,即K = 5, C = 1, N = 6,故有:

​ 所以第一层的总参数量为:156。

​ 池化层不计算参数。

五、全连接层参数数量

​ 在CNN中有两种类型的全连接层。第1种是连接到最后1个卷积层,另外1种的FC层是连接到其他的FC层。两种情况分开讨论。

​ ①连接到最后一个卷积层:

​ 定义如下:

​ Wcf= weights的数量

​ Bcf= biases的数量

​ O= 前卷积层的输出图像的尺寸

​ N = 前卷积层的核数量

​ F = 全连接层的神经元数量

​ 公式:

 

 

示例:以MNIST的28×28×1的输入图片为例,在LeNet5的第一个全连接层中,前面一层的输出图像大小为:4×4×16,该全连接层有120个神经元,即 O = 4, N = 16 , F = 120,故有:

 

所以该层总共有30840个参数。

​ ②连接到上一个全连接层

​ 定义如下:

​ Wff= weights的数量

​ Bff= biases的数量

​ Pff= 总参数的数量

​ F= 当前FC层的神经元数量

​ F-1 = 前FC层的神经元数量

​ 公式:

示例:LeNet5中全连接层的第2层,前一个全连接层的神经元个数为F-1 = 120, 当前层的神经元个数为F = 84,则有:
 

 六、代码实现与验证

​ 基于TensorFlow的代码实现如下:

# LeNet5网络模型
model = tf.keras.Sequential([# 第1层-卷积层 滤波器尺寸5*5,6个keras.layers.Conv2D(6,5),# 第2层-池化层,滤波器尺寸为2×2,步长为2keras.layers.MaxPooling2D(pool_size=2,strides=2),keras.layers.ReLU(),# 第3层-卷积层 滤波器尺寸5*5,16个keras.layers.Conv2D(16,5),# 第4层-池化层,滤波器尺寸为2×2,步长为2keras.layers.MaxPooling2D(pool_size=2,strides=2),keras.layers.ReLU(),keras.layers.Flatten(), # 拉平之后方便做全连接# 第5层-全连接层keras.layers.Dense(120,activation='relu'),# 第6层-全连接层keras.layers.Dense(84,activation='relu'),# 第7层-全连接层keras.layers.Dense(10,activation='softmax') # 最后输出10类,0-9的数字
])

 运行代码输出:

 文献参考:

  1. https://www.cnblogs.com/touch-skyer/p/9150039.html

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

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

相关文章

c语言数字转圈

数字转圈 题干输入整数 N(1≤N≤9),输出如下 N 阶方阵。 若输入5显示如下方阵: * 1** 2** 3** 4** 5* *16**17**18**19** 6* *15**24**25**20** 7* *14**23**22**21** 8* *13**12**11**10** 9*输入样例3输出样例* 1*…

linux高级篇基础理论六(firewalld,防火墙类型,,区域,服务端口,富语言)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技…

基于战争策略算法优化概率神经网络PNN的分类预测 - 附代码

基于战争策略算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于战争策略算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于战争策略优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

测试工具JMeter的使用

目录 JMeter的安装配置 测试的性能指标 TPS 响应时长 并发连接 和 并发用户 CPU/内存/磁盘/网络 负载 性能测试实战流程 JMeter JMeter快速上手 GUI模式 运行 HTTP请求默认值 录制网站流量 模拟间隔时间 Cookie管理器 消息数据关联 变量 后置处理器 CSV 数据文…

中国企业500强的排名也在不断变化。面对不确定性的挑战,企业如何应对?

随着全球经济的不断发展和变化,中国企业500强的排名也在不断变化。面对不确定性的挑战,企业如何应对?在本文中,挖数据平台将提供数据源探讨中国企业500强在应对不确定性方面的突围与变革。 一、数据挖掘与分析 从2006年到2023年&…

【电子通识】什么是物料清单BOM(Bill of Material))

BOM (Bill of Materials)是我们常说的物料清单。BOM是制造业管理的重点之一,用于记载产品组成所需要的全部物料(Items)。物料需求的计算是从最终产品开始,层层往下推算出部件,组件,零件和原材料的需求量。这…

Python---函数定义时缺省参数(参数默认值)

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。 def user_info(name, age, gender男):pr…

汇编-CALL和RET指令

CALL指令调用一个过程, 使处理器从新的内存位置开始执行。过程使用RET(从过程返回) 指令将处理器转回到该过程被调用的程序点上。 CALL指令的动作: 1.将CALL指令的下一条指令地址压栈(作为子过程返回的地址) 2.将被调过程的地址复制到指令指针寄存器E…

搜维尔科技:Faceware面部捕捉最佳实践!

视频源和分辨率: 我们的软件针对 RGB 彩色素材进行了优化,不支持使用红外摄像机。 我们建议视频分辨率为 720p 和 1080p。低于 720p 的分辨率可能会对跟踪质量产生负面影响,而高于 1080p 的分辨率会导致存储要求和传输时间增加,而…

python——第十三天

uuid 是通用唯一识别码(Universally Unique identifier)的缩写 UUID是一个128比特的数值 uuid模块: 获取一个128位(比特)的永不重复的数字,当然我们使用的时候会转换为32个的字符串 impor uuud uui…

【Java 进阶篇】Jedis:让Java与Redis轻松对话的利器

在现代软件开发中,缓存系统是提高系统性能的常见手段之一,而Redis作为一个高性能的缓存数据库,被广泛应用于各类系统。如果你是Java开发者,那么使用Jedis库可以让你轻松地与Redis进行交互。本文将带你深入了解Jedis的快速入门&…

R语言——图解taxize,强烈推荐收藏关注,持续更新中

图解taxize 1. taxize分解思路1.1 图解说明 2. 针对不同数据库的函数组2.1 APGⅢ2.2 BOLD(barcode of life data system) 1. taxize分解思路 taxize可以帮助人们从许多数据库中获取信息。 由于要处理的数据库很多,导致taxize包含的功能函数…

可持续创新 精选路线

在加速企业数字化转型、 实现智能制造的升级之路上! 使用好的工具固然重要, 而有好工具,也要会用工具。生信科技不仅为企业提供强大的产品支持, 更有全方位的定制化服务, 提升工程师的工具应用能力, 让企业…

文件批量重命名技巧:图片文件名太长怎么办?告别手动改名方法

在日常生活中,常常会遇到文件名过长导致的问题。尤其是在处理大量图片文件时,过长的文件名可能会使得文件管理变得混乱不堪。现在来看下云炫文件管理器如何批量重命名,让图片文件名变得更简洁,提高工作效率。 操作1、在云炫文件…

C++之unordered_map/set的使用

前面我们已经学习了STL中底层为红黑树结构的一系列关联式容器——set/multiset 和 map/multimap(C98). unordered系列关联式容器 在C98中, STL提供了底层为红黑树结构的一系列关联式容器, 在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次, 当树中的节点非常多时,…

MindStudio学习一 整体介绍

一场景介绍 二 安装介绍 1.LINUX 采用无昇腾硬件采用linux 分部署 2.WINDOWS 3.linux下安装整体步骤 3.1安装依赖 3.2 安装步骤 1.gcc cmake 等依赖 2.python3.7.5 3.pip 安装依赖 4.安装JDK 5.安装 Ascend-cann-toolkit 6.解压安装Mindstudio 7.进入bin路径 ./…

MySQL where 子句

文章目录 前言MySQL where 子句语法 从命令提示符中读取数据使用PHP脚本读取数据后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力…

【ArcGIS Pro微课1000例】0035:栅格影像拼接(dem高程数据)

本实验讲解在ArcGIS Pro中,栅格数据的两种拼接(镶嵌)方法,适用于遥感影像、DOM、DEM、DSM等常见栅格数据。 文章目录 一、加载实验数据二、栅格拼接工具1. 镶嵌2. 镶嵌至新栅格三、注意事项四、拓展阅读一、加载实验数据 加载配套实验数据中的0035.rar中的两个dem数据,如…

【从删库到跑路】MySQL数据库 — E-R图 | 关系模型

🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 文章目录 🌹简述什么是E-R图⭐核心概念 🌹E-R图…

完美解决:Nginx访问PHP出现File not found.

目录 解决方法一: 解决方法二: 遇到 File not found. 出现的问题解决: 解决方法一: 修改nginx的主配置文件。 vi /etc/nginx/nginx.conf location ~ \.php$ { root html; fastcgi_pass …