1.介绍
ShuffleNet V2也是由旷视科技提出的,它是ShuffleNet v1的升级版(可参见我的一篇博客ShuffleNet 神经网络简介与代码实战),旷视科技是根据四个规则来改进ShuffleNet v1,更加详细的介绍可以参见:ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design。
2.模型结构
下图中分析了ShuffleNet v1和MobileNets V2在GPU和ARM上的耗时分布,从图中可看出Conv操作占了其时间的绝大多数,但Elemwise/Data IO等内存读写密集型操作也占了相当比例的时间,因此,我们在设计网络的时候,不仅要考虑Conv的个数也要考虑其他操作。
文中总结了四个准则来指导优化网络:
1)卷积层的输入和输出特征通道数相等时MAC(内存访问消耗时间)最小,此时模型速度最快。
2)过多的group操作会增大MAC,从而使模型速度变慢。
3)模型中的网络分支数量越少,模型速度越快。
4 )element-wise操作所带来的时间消耗远比在FLOPs上的体现的数值要多,因此要尽可能减少element-wise操作。
接下里,我具体来看下图中网络结构的改变,是怎样对应着这四个准则,其中(a)和(b)是ShuffleNet v1文章中两种结构,(c)和(d)则是根据(a)和(b)改进而来。(c)结构相对于(a)结构,增加了channel split操作,就是为了保证concat操作之后满足前面第1)点。(c)中取消了GCconv是为了满足前面第2)点,同时把channel shuffle的操作移到了concat后面,和前面第3)点对应。将将element-wise add操作替换成concat,和和前面第4)点对应。
3.模型特点
通过四个上面所提到的四个准则设计网络,而不是盲目的设计网络,这样做的好处,可以减少计算量和运算时间。
4.代码实现 pytorch
到此这篇conv2d函数(conv2函数代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/haskellbc/25241.html