1. 神经网络的利用率
当一个CNN网络做forward时,对于硬件资源的利用情况,称之为利用率。
如何计算利用率?
- 计算网络的计算量,通常是乘累加的次数
- 测量网络运行耗时
- 乘累加次数除以耗时, 计算该网络的GFLOPS
- 用计算的网络GFLOPS除以硬件资源的理论GFLOPS,即利用率
2. GFLOPS
全称:float operations per second,每秒可做浮点操作的数量。用来衡量硬件性能,等价于运算速度。该值越大,说明硬件性能越高,速度越快。量级通常在M(10e6),G(10e9),T(10e12)。例如:9.6 GFLOPS 表示每秒可做 9.6 G 次浮点操作。
FLOPs:全称是float operations,浮点运算次数,等价于运算量。可用来衡量网络/模型的复杂度。该值越大,表示该网络的计算复杂度越高。
3. 网络计算量
网络前向计算时,卷积运算占据耗时90%以上。因此重点关注下如何计算卷积的运算量。
为简化问题,以下讨论认为:卷积采用滑动窗口且,忽略非线性计算的开销。
有卷积层的参数包括:输入 feature map 的 C i n C_{in} Cin,宽 H i n H_{in} Hin,高 W i n W_{in} Win ,输出 feature map 的 C o u t C_{out} Co