【北上广深杭大厂AI算法面试题】深度学习篇…这里介绍CNN模型所需的计算力(flops)和参数(parameters)数量是如何计算的?附代码。(一)
【北上广深杭大厂AI算法面试题】深度学习篇…这里介绍CNN模型所需的计算力(flops)和参数(parameters)数量是如何计算的?附代码。(一)
文章目录
欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:
详细信息可关注V “学术会议小灵通
”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/145551342
前言
- 在深度学习模型中,计算力(FLOPs, Floating Point Operations)和参数数量(Parameters)是衡量模型复杂度和计算需求的重要指标。
- 了解它们如何计算对于优化模型、评估模型的计算开销以及在硬件上部署模型至关重要。
- 本文将结合卷积神经网络(CNN)的结构,详细说明如何计算CNN模型的FLOPs和参数数量,并提供相应的代码示例。
1. 参数数量(Parameters)
CNN的参数主要包括:
- 卷积层的权重:每个卷积核的权重。
- 偏置:每个卷积层、全连接层(Fully Connected, FC)中的偏置。
- 全连接层的权重和偏置:这些层的权重是一个矩阵,其每个元素连接输入和输出的神经元。
1.1 卷积层的参数计算
假设一个卷积层的输入是一个深度为
C
i
n
C_{in}
Cin 的图像(或上一层的输出),卷积核的大小为
K
h
×
K
w
K_h × K_w
Kh×Kw,输出深度为
C
o
u
t
C_{out}
Cout ,则该卷积层的参数数量为:
- K h × K w × C i n K_h × K_w × C_{in} Kh×Kw×Cin:每个卷积核的参数数量。
- + 1 +1 +1:每个卷积核有一个偏置。
- C o u t C_{out} Cout:输出通道数。
1.2 全连接层的参数计算
对于一个全连接层,输入的特征数为
N
i
n
N_{in}
Nin ,输出的特征数为
N
o
u
t
N_{out}
Nout,则该层的参数数量为:
- N i n × N o u t N_{in} × N_{out} Nin×Nout :全连接层的权重数量。
- + N o u t +N_{out} +Nout:偏置项。
2. FLOPs 计算
FLOPs(浮点运算次数)表示计算过程中涉及到的浮点运算的数量。FLOPs 的计算方式依赖于网络结构的每一层操作的计算复杂度。
2.1 卷积层的 FLOPs 计算
假设输入大小为
H
i
n
×
W
i
n
H_{in} × W_{in}
Hin×Win(高度和宽度),卷积核大小为
K
h
×
K
w
K_h × K_w
Kh×Kw,输出通道数为
C
o
u
t
C_{out}
Cout ,输入通道数为
C
i
n
C_{in}
Cin ,则每个卷积操作涉及的 FLOPs 数量为:
- K h × K w × C i n K_h × K_w × C_{in} Kh×Kw×Cin:卷积核与输入特征图的每个局部区域的乘法和加法运算。
- × 2 ×2 ×2:每次乘法和加法操作。
每个卷积核输出一个元素,输出特征图的大小为
H
o
u
t
×
W
o
u
t
H_{out} × W_{out}
Hout×Wout,所以该卷积层的总 FLOPs 为:
2.2 全连接层的 FLOPs 计算
全连接层的每个神经元需要执行加法和乘法运算,所以全连接层的 FLOPs 计算为:
- 2 是因为每个神经元的输入需要乘以权重并加上偏置。
下一节请参考:【北上广深杭大厂AI算法面试题】深度学习篇…这里介绍CNN模型所需的计算力(flops)和参数(parameters)数量是如何计算的?附代码。(二)