跳转到主要内容

神经网络的利用率和

demi 提交于

<font style="line-height: 40px;"><strong>1. 神经网络的利用率</strong></font>

当一个CNN网络做forward时,对于硬件资源的利用情况,称之为利用率。

如何计算利用率?
&nbsp; • &nbsp; 计算网络的计算量,通常是乘累加的次数
&nbsp; • &nbsp; 测量网络运行耗时
&nbsp; • &nbsp; 乘累加次数除以耗时, 计算该网络的GFLOPS
&nbsp; • &nbsp; 用计算的网络GFLOPS除以硬件资源的理论GFLOPS,即利用率

<font style="line-height: 40px;"><strong>2. GFLOPS</strong></font>

全称:float operations per second,每秒可做浮点操作的数量。用来衡量硬件性能,等价于运算速度。该值越大,说明硬件性能越高,速度越快。量级通常在M(10e6),G(10e9),T(10e12)。例如:9.6 GFLOPS 表示每秒可做 9.6 G 次浮点操作。

FLOPs:全称是float operations,浮点运算次数,等价于运算量。可用来衡量网络/模型的复杂度。该值越大,表示该网络的计算复杂度越高。

<font style="line-height: 40px;"><strong>3. 网络计算量</strong></font>

网络前向计算时,卷积运算占据耗时90%以上。因此重点关注下如何计算卷积的运算量。

为简化问题,以下讨论认为:卷积采用滑动窗口且,忽略非线性计算的开销。

有卷积层的参数包括:输入 feature map 的 C<sub>in</sub> ,宽 H<sub>in</sub> ,高 W<sub>in</sub> ,输出 feature map 的 C<sub>out</sub> ,宽 H<sub>out</sub> ,高 W<sub>out</sub> ,卷积核的尺寸 K ,卷积核通道等于 C<sub>in</sub> ,卷积核个数等于 C<sub>out</sub> 。则该卷积核与feature map做卷积的运算量为:

<center><img src="http://imgtec.eetrend.com/files/2019-09/%E5%8D%9A%E5%AE%A2/100045348-81…; alt=""></center><br>

其中的1表示偏置量。偏置值每个卷积核对应1个,共有 C<sub>out</sub> 个。(wx+b)

将 FLOPS 除以 10e9 得到 GFLOPS。

参考
[1] 神经网络计算量FLOPs: https://blog.csdn.net/zhaoyin214/article/details/83616164
[2] print_model_parm_flops: https://blog.csdn.net/junmuzi/article/details/83109660

版权声明:本文为CSDN博主「鸟恋旧林XD」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/niaolianjiulin/article/details/84073573