美文网首页jupyter
卷积中参数量和计算量

卷积中参数量和计算量

作者: Latet | 来源:发表于2019-08-05 16:33 被阅读0次

    前言

    本文旨在学习和记录,如需转载,请附出处https://www.jianshu.com/p/c2a0ba5bb3d1

    普通卷积

    参数量

    参数量是参与计算参数的个数,占用内存空间,假设输入通道和输出通道都是1,核大小为(K,K)&,输入map大小为

    (H_{in},W_{in}),输出map大小为(H_{out},W_{out}),考虑偏置,不补0的卷积。

    其参数量为:K*K+1

    若考虑输入通道C_{in}和输出通道C_{out},则参数量为:(C_{in}*(K*K)+1)*C_{out}

    计算量(乘加次数)

    MAC(Multiply Accumulate),需要考虑输出map的大小,1个MAC算两次操作

    假设输入通道和输出通道都是1,核大小为K*K,输入map大小为

    (H_{in},W_{in}),输出map大小为(H_{out},W_{out}),考虑偏置,不补0的卷积。

    其计算量为:K*K*H_{out}*W_{out}

    若考虑输入通道C_{in}和输出通道C_{out},则计算量为:C_{in}*K*K*H_{out}*W_{out}*C_{out}

    FLOPs(floating point operations)

    浮点运算量,指计算量,跟乘加次数有点不一样,若考虑偏置

    则FLOPs =(C_{in}*2*K*K)*H_{out}*W_{out}*C_{out}

    不考虑偏置的情况下

    则FLOPs =(C_{in}*2*K*K-1)*H_{out}*W_{out}*C_{out}

    注意:这里乘和加分开,加的操作因为n个数相加所以减1了,考虑偏置则补掉了加1

    可分离卷积

    可分离的卷积具体操作是先对输入map每单个channel进行卷积的操作,然后再进行1维卷积实现输出通道的改变。

    假设输入通道和输出通道都是1,核大小为(K,K)&,输入map大小为

    (H_{in},W_{in}),输出map大小为(H_{out},W_{out}),考虑偏置,不补0的可分离卷积。

    考虑输入通道C_{in}和输出通道C_{out}

    参数量:

    C_{in}*K*K+C_{out}*(C_{in}*1*1+1), 后面加1是偏置

    MAC计算量:

    C_{in}*K*K*H_{out}*W_{out}+C_{in}*C_{out}*H_{out}*W_{out}

    FLOPs计算量为:

    (C_{in}*2*K*K-1)*H_{out}*W_{out}+(C_{in}*2*1*1)*H_{out}*W_{out}*C_{out}

    参考:

    https://www.zhihu.com/question/65305385/answer/451060549

    说明

    如有错误,欢迎指正!

    相关文章

      网友评论

        本文标题:卷积中参数量和计算量

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