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

 

目录

一、卷积层图像输出尺寸

 二、池化层图像输出尺寸

三、全连接层输出尺寸

四、卷积层参数数量

五、全连接层参数数量

 六、代码实现与验证


 以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.hqwc.cn/news/215469.html

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

相关文章

dom api

dom的全称为Document Object Model,即文档对象模型.所谓文档就是html页面,对象就是js里的对象,通过这个模型把页面上的元素和js里的对象关联起来. 下面是关于dom api的一些常用方法 1.获取元素 使用querySelector()方法获取一个元素 使用querySelectorAll()方法获取所有元素 当…

Python基础之中常用的数据类型总结,从入门到入土的python教程之一。

文章目录 Python 中常用的数据类型包括:Python 中布尔类型(bool)Python 中的数字类型概述Pyhon中的字符串概述Python 中的List概述Python 中的元组类型(tuple)Python中的字典(Dictionary)Python中的集合(Set)Python中的…

html幸运大转盘抽奖(附源码)

文章目录 1.设计来源1.1 幸运大转盘 风格11.2 幸运大转盘 风格21.3 幸运大转盘 风格31.4 幸运大转盘 奖品效果1.5 幸运大转盘 活动未开始1.6 幸运大转盘 活动已结束1.7 幸运大转盘 图片源素材 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址&a…

【Web】PhpBypassTrick相关例题wp

目录 ①[NSSCTF 2022 Spring Recruit]babyphp ②[鹤城杯 2021]Middle magic ③[WUSTCTF 2020]朴实无华 ④[SWPUCTF 2022 新生赛]funny_php 明天中期考,先整理些小知识点冷静一下 ①[NSSCTF 2022 Spring Recruit]babyphp payload: a[]1&b1[]1&b2[]2&…

LED驱动控制专用电路

一、基本概述 TM1628是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU 数 字接口、数据锁存器、LED 驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调…

网络安全—自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

番外篇之矩阵运算

矩阵的运算代码&#xff08;加减乘除&#xff09;&#xff08;内有注释&#xff09; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define ROW 10 //定义行 #define COL 10 //定义列 //设置全局变量A矩阵的m代表实际矩阵的行数&#xff0c;n代表实际矩阵的列…

【数据结构】最小生成树(Kruskal算法)

一.基本思想 设无向连通网为G&#xff08;V&#xff0c;E&#xff09;&#xff0c;令G的最小生成树为T&#xff08;U&#xff0c;TE&#xff09;&#xff0c;其初态为UV&#xff0c;TE{},然后&#xff0c;按照边的权值由小到大的顺序&#xff0c;考察G的边集E中的各条边。若被考…

大数据Doris(二十八):Routine Load查看和修改作业

文章目录 Routine Load查看和修改作业 一、​​​​​​​查看导入作业状态

2023年【熔化焊接与热切割】免费试题及熔化焊接与热切割模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割免费试题是安全生产模拟考试一点通生成的&#xff0c;熔化焊接与热切割证模拟考试题库是根据熔化焊接与热切割最新版教材汇编出熔化焊接与热切割仿真模拟考试。2023年【熔化焊接与热切割】免费试题及…

用栈实现队列的功能,用队列实现栈的功能?

我们知道队列的特点是先入先出&#xff0c;栈的特点是后入先出&#xff0c;那么如何用栈实现队列的功能&#xff0c;又如何用队列实现栈的功能呢&#xff0c;且听我一一道来 我们首先来看用栈实现队列的功能&#xff0c;首先大伙儿要知道队列和栈的特点其实是“相反”&#xf…

OSG粒子系统与阴影-雾效模拟(1)

虚拟现实中有很多效果&#xff0c;如雨效、雪效、雾效等&#xff0c;这些都可以通过粒子系统来实现。一个真实的粒子系统的模式能使三维场景达到更好的效果。 本章对OSG粒子系统的使用以及生成自定义粒子系统的方法进行了详细介绍最后还附带说明了阴影的使用方法。在实时的场景…