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

news2024/11/14 3:27:41

 

目录

一、卷积层图像输出尺寸

 二、池化层图像输出尺寸

三、全连接层输出尺寸

四、卷积层参数数量

五、全连接层参数数量

 六、代码实现与验证


 以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,步长为2
    keras.layers.MaxPooling2D(pool_size=2,strides=2),
    keras.layers.ReLU(),
    # 第3层-卷积层 滤波器尺寸5*5,16个
    keras.layers.Conv2D(16,5),
    # 第4层-池化层,滤波器尺寸为2×2,步长为2
    keras.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.coloradmin.cn/o/1248747.html

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

相关文章

简答的体系架构分析

背景 一点体系架构的分析 体系架构图

单片机、ARM、嵌入式开发、Android 底层开发有什么关系?

单片机、ARM、嵌入式开发、Android 底层开发有什么关系? 从我目前的见识来看: 单片机是个系统(比如:51、AVR、PLC...),其中包含了去除了输入输出之外的运算器、控制器、存储器,我们用程序可以非…

文献速递:人工智能(AI)用于神经学家:数字神经元会梦见电子羊吗?

这篇文章详细讨论了人工智能(AI)在神经学领域的应用及其对医疗保健行业的深远影响。主要内容可以分为以下几个部分: **1.AI和机器学习的基础知识:**文章首先解释了AI的基本概念,回顾了从最初的基于规则的方法到当前的…

【经典小练习】简单的文件加密解密

文章目录 🌹什么是文件加密⭐应用场景 🛸案例🌺描述🌺代码 🌹什么是文件加密 Java文件加密是指使用Java编程语言和相关的加密算法对文件进行加密处理。通过这种方式,可以将文件内容转换为一种非常规的形式…

金融机构如何高效率考勤?这个技巧帮了大忙!

在现代社会,随着科技的不断发展,人脸识别技术作为一种高效、便捷的身份验证手段,逐渐应用于各个领域,其中之一便是人脸考勤系统。 传统的考勤方式存在一系列问题,如卡片打卡容易被冒用、签到表容易造假等,而…

「首届广州百家新锐企业」名单出炉!数说故事遴选入围

11月20日,由中共广州市委统战部、市工商联、市工信局、市国资委、市科技局联合主办的首届广州百家新锐企业融通创新交流会在广州成功举办。 为推动广州市中小民营企业的创新发展,践行新发展理念,厚植广州产业根基,现场发布首届广…

Mac Ubuntu双系统解决WiFi和WiFi 5G网络不可用问题

文章目录 设备信息1. Ubuntu WiFi不可用解决方式查看Mac的网卡型号根据网卡型号搜索获取到的解决方法查看WiFi名字问题参考链接 2. 解决WiFi重启后失效问题打开终端创建.sh脚本文件编辑脚本文件复制粘贴脚本修改脚本权限创建并编辑systemd service文件复制粘贴下文到systemd se…

百度搜索框中的下拉提示关键词提取

效果图 代码有点多,绑定资源了 导出excel如下 贴心养眼背景图鼠标点击小爱心

c语言判断三角形

以下是一个用C语言编写的程序&#xff0c;用于判断输入的三个数能否构成三角形。 #include <stdio.h>int main() { int a, b, c; printf("请输入三角形的三条边长&#xff1a;\n"); scanf("%d%d%d", &a, &b, &c); if (a b…

【​用运算放大器设计恒流电流源电压4V-74V适应范围 ​】2021-11-29

缘由用运算放大器设计恒流电流源-编程语言-CSDN问答直流恒流源设计&#xff0c;要求用到运算放大器-硬件开发-CSDN问答求助恒流驱动电路&#xff0c;运放端口电压的问题&#xff1f; - 电路设计论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛!(不能实现恒流坏的电路设计反面例子…

mac 修改 hosts 文件

打开 hosts 所在文件夹 command shift G 快捷键 输入&#xff1a;“/private/etc/hosts” 后回车 如下所示 进入 hosts 文件所在位置&#xff0c;找到 hosts 文件&#xff0c;双击打开 修改 hosts 文件 将所需要的配置信息追加到hosts 文件中&#xff0c;或者修改需要改…

数据结构与算法【哈希表】的Java实现

目录 介绍 实现哈希表 大体框架 实现数组扩容 实现查询key 实现新增元素 实现删除元素 哈希算法 String中重写的hashCode()方法 介绍 哈希表也叫散列表&#xff0c;哈希表是一种数据结构&#xff0c;它提供了快速的插入操作和查找操作&#xff0c;无论哈希表总中有多…

Flink 常用物理分区算子(Physical Partitioning)

Flink 物理分区算子(Physical Partitioning) 在Flink中&#xff0c;常见的物理分区策略有&#xff1a;随机分配(Random)、轮询分配(Round-Robin)、重缩放(Rescale)和广播(Broadcast)。 接下来&#xff0c;我们通过源码和Demo分别了解每种物理分区算子的作用和区别。 (1) 随机…

数组题目: 665. 非递减数列、453. 最小移动次数使数组元素相等、283. 移动零、189. 旋转数组、396. 旋转函数

665. 非递减数列 题解&#xff1a; 题目要求一个非递减数列&#xff0c;我们可以考虑需要更改的情况&#xff1a; nums {4, 2, 5} 对于这个nums&#xff0c;由于2的出现导致非递减&#xff0c;更改的情况就是要么4调到<2&#xff0c;要么2调到4,5. nums {1, 4, 2, 5} …

从Redis反序列化UserDetails对象异常后发现FastJson序列化的一些问题

最近在使用SpringSecurityJWT实现认证授权的时候&#xff0c;出现Redis在反序列化userDetails的异常。通过实践发现&#xff0c;使用不同的序列化方法和不同的fastJson版本&#xff0c;异常信息各不相同。所以特地记录了下来。 一、项目代码 先来看看我项目中redis相关配置信息…

为什么说巴罗洛是意大利葡萄酒中的极品?

在来自南欧国家的众多优秀葡萄酒中&#xff0c;巴罗洛是最好最著名的意大利红酒之一。巴罗洛是一种来自意大利的高品质红酒&#xff0c;巴罗洛红酒是干的&#xff0c;浓郁的&#xff0c;富含单宁和酒精&#xff0c;典型的水果和泥土的味道。巴罗洛产区位于该国北部的皮埃蒙特地…

x-www-form-urlencoded的含义解释,getReader()和getParameter()的区别

1、x-www-form-urlencoded x-www-form-urlencoded是一种编码格式&#xff0c;它是一种常见的编码方式&#xff0c;用于在HTTP请求中 传输表单数据 。在这种编码方式下&#xff0c;表单数据被编码为URL格式&#xff0c;然后作为请求体&#xff08;payload&#xff09;发送。 需要…

Langchain的Agents介绍

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Ardupilot开源飞控之VTOL之旅:开箱

Ardupilot开源飞控之VTOL之旅&#xff1a;开箱 1. 源由2. 收货2.1 外包装2.2 内包装2.3 部件2.3 概貌 3. 探索3.1 飞控VTOL3.2 远程控制3.3 自动导航3.4 部件清单 4. 计划 1. 源由 心系已久的HEE WING T1 Ranger VTOL终于来了&#xff0c;因此开启了VTOL之旅。 当然Ardupilot…

jenkins + gitlab 自动部署(webhook)

Jenkins是一个流行的开源CI/CD工具&#xff0c;可以与Git等版本控制系统集成&#xff0c;实现自动构建、测试和部署。Webhook是一种机制&#xff0c;可以在Git仓库中设置&#xff0c;在代码提交或合并请求时触发Jenkins构建任务&#xff0c;以完成自动化部署。 实操 设备信息 …