神经网络参数量和计算量计算

概述

神经网络模型运算可以看成一个数据流入流出的过程,涉及的计算包含内存占用和浮点运算量两个方面。数据占用的空间计算很容易,数据量乘以表示单个数据所占用的字节数 (e.g, 4, 8)。复杂一点的是 layer 部分的参数占用的空间。

本篇不涉及训练时的梯度保存空间。

data-->layer-->data

浮点运算概念

参考自:https://blog.csdn.net/sinat_34460960/article/details/84779219

FLOPs:floating point operations,即表示浮点运算次数。

FLOPS:floating point operations per second,意指每秒浮点运算次数。

下图是各种显卡的计算能力(TFLOPS,每秒万亿次浮点运算 $10^{12} FLOPs /s$)。参考NVIDIA.

全连接型神经网络

输入data:  (x,1);

输出data:  (y, 1);

$ params = y imes (x+1) $

"+1": bias.

$ FLOPs  =  y imes x [乘] + y imes x [加] $

卷积神经网络

 输出feature map大小计算公式:

$ out_w = frac{(in_w + 2P-f)}{2}+1 $

 P 是 padding size,f是卷积核大小, $out_h$同理。

输入data:$in_w, in_h, in_{chs}$;

输出data: $out_w, out_h, out_{chs}$;

$ params = f imes f imes(in_{chs} + 1) $

$ FLOPs = 2 imes (f imes f imes in_{chs}) imes(out_w imes out_h imes out_{chs}) $;加和乘各一半。

原文地址:https://www.cnblogs.com/walter-xh/p/10609868.html