美文网首页
模型参数、计算量总结

模型参数、计算量总结

作者: 查令84号街头 | 来源:发表于2020-02-21 13:41 被阅读0次

    首先要理清楚:FLOPs的计算是包括了加法次数的

    CNN


    输入尺寸 C_i * H_i * W_i ,卷积核的大小为 K * K,输出的尺寸大小为 C_{o} * H_{o} * W_{o}

    参数量

    (1)不考虑bias:paremeters = K^2*C_i*C_o
    (2)考虑bias:paremeters = (K^2*C_i+1)*C_o

    FLOPs

    (1)不考虑bias
    FLOPs = (2*C_i*K^2 -1)*C_o*H_o*W_o

    解释:先计算输出的feature中一个元素需要的计算量,即括号这一部分,根据卷积的公式可知这部分为C_i * K^2 + C_i * K^2-1,其中前一项表示做了的乘法次数,后一项表示这些乘法结果的相加次数,因为n个数相加需要n-1次。所以显然如果考虑bias的话刚好把这个1给补回去。
    (2)考虑bias
    FLOPs = 2*C_i*K^2*C_o*H_o*W_o

    全连接

    输入维度C_i,输出C_o

    参数量

    (1)不考虑bias:paremeters = C_i * C_o
    (2)考虑bias:paremeters = (C_i + 1) * C_o

    FLOPs

    这个很简单,全连接层就理解为一个矩阵,C_o是矩阵行数,C_i为列数,若不考虑bias,则先计算输出向量中的一个元素需要多少计算量,首先要做C_i次乘法,然后做C_i-1次加法。若考虑bias,则做的加法会多一次
    (1)不考虑bias
    FLOPs = (2*C_i -1) * C_o

    (2)考虑bias
    FLOPs = (2*C_i) * C_o

    Depth-wise CNN(深度可分离卷积)

    输入尺寸 C_i * H_i * W_i ,卷积核的大小为 K * K,输出的尺寸大小为 C_{o} * H_{o} * W_{o}

    深度可分离卷积的过程:
    1. 将普通卷积分为C_i组,进行卷积的时候是没有普通卷积中在通道维度上求和的过程的
    2. 用一个1 * 1的卷积核来进行通道融合,所以总的参数量和FLOPs计算如下
      不考虑bias的情况下计算如下:
      \begin{aligned} paremeters &= K^2*C_i +C_i*C_o\\ FLOPs &= (2*K^2-1)*C_i*W_o*H_o+(2*C_i -1)*C_o*W_o*H_o \end{aligned}

    考虑bias的情况计算如下:
    \begin{aligned} paremeters &= K^2*C_i+C_i +C_i*C_o+C_o\\ FLOPs &= 2*K^2*C_i*H_o*W_o +2*C_i*C_o*H_o*W_o\\ &=2*(K^2+C_o)*C_i*W_o*H_o \end{aligned}

    相关文章

      网友评论

          本文标题:模型参数、计算量总结

          本文链接:https://www.haomeiwen.com/subject/xjjcqhtx.html