神经网络中参数量parameters和FLOPs计算

一.神经网络中参数量parameters和FLOPs计算

  • CNN中的parameters分为两种:W和b,对于某一个卷积层,它的parameters的个数为:
    ( K h ∗ K w ∗ C i n ) ∗ C o u t + C o u t \left(K_{h} * K_{w} * C_{i n}\right) * C_{o u t}+C_{o u t} (KhKwCin)Cout+Cout
    其中, K h K_{h} Kh是卷积核的高度, K w K_{w} Kw是卷积核的宽度, C i n C_{in} Cin是输入的通道数, C o u t C_{out} Cout是输出的通道数
  • 对于某个全连接层,如果输入的数据有 N i n N_{in} Nin个节点,输出的数据有 N o u t N_{out} Nout个节点,它的参数个数为:
    N i n ∗ N o u t + N o u t N_{i n} * N_{o u t}+N_{o u t} NinNout+Nout
  • FLOPs:全称是floating point operations per second,指的是每秒浮点运算次数,即用来衡量硬件的计算性能
  • 对于某个卷积层,它的FLOPs数量是:
    [ ( K h ∗ K w ∗ C i n ) ∗ C o u t + C o u t ] ∗ ( H ∗ W ) = n u m − params ⁡ ∗ ( H ∗ W ) \left[\left(K_{h} * K_{w} * C_{i n}\right) * C_{o u t}+C_{o u t}\right] *(H * W)=n u m_{-} \operatorname{params} *(H * W) [(KhKwCin)Cout+Cout](HW)=numparams(HW)
    其中, n u m p a r a m s num_{params} numparams表示该层参数的数量,H是输出图片的高,W是输出图片的宽
  • 例题1:假设你的输入是一个300×300的彩色(RGB)图像,而你没有使用卷积神经网络。 如果第一个隐藏层有100个神经元,每个神经元与输入层进行全连接,那么这个隐藏层有多少个参数(包括偏置参数)
  • A1:因为输入的节点数量是300*300*3,输出的节点数量是100。然后加上偏置项b,因为隐藏层有100个节点,每个节点都有一个偏置,所以b=100。利用上面计算全连接网络的公式,故3*300*300*100+100
  • 例题2:假设你的输入是300×300彩色(RGB)图像,并且你使用卷积层和100个过滤器,每个过滤器都是5×5的大小,请问这个隐藏层有多少个参数(包括偏置参数)
  • A2:首先,参数和输入的图片大小是没有关系的,无论你给的图像像素有多大,参数值都是不变的,在这个题中,参数值只与过滤器有关。单个过滤器的大小是5*5,由于输入的是RGB图像,所以输入通道数目是3。因此一个过滤器的组成是5*5*3,每一过滤器只有一个偏置项b,因此一个过滤器所拥有的参数是5*5*3+1=76,一共用了100个过滤器,所以隐藏层含有76*100=7600个参数。其实,也就是上面的公式计算CNN的参数量。

二、参考博客

参考博客

你可能感兴趣的:(机器学习)