探索发现:shufflenet 中 shuffle 操作板端部署的可行性

本文探讨了ShuffleNet中shuffle操作在板端部署的可行性。由于某些开发板不支持原版操作,作者提出通过对权重进行操作来达到相同效果,避免了额外的运算,并提供了试验代码验证一致性。

一、前言

之前使用shufflenet-nanodet时,思考过它里面的shuffle op的部署,因为很多开发板不支持5 维 tensor,所以python中的shuffle方式,是没法继续使用的,所以就要用其他的思路来做。去年事情多,一直没有空把这个心得记录下来,现在有空了,特此记录,方便自己并抛砖引玉,如有错误,还请指出,谢谢!

二、试验

(一)思路

shufflenet的代码来自nanodet,至于它是否与原版一致,我没去比较。

上文说过的,pythonshuffle方式没法用,乍一看可能觉得没法继续。但是仔细想想,shuffle操作只是对通道这一维度做了shuffle,其他维度是没有动的。
在这里插入图片描述

上图是一个shuffle + 卷积的粗略展示,很直白了。python里我们是对tensor进行shuffle操作。部署到板端时,由于硬件的限制,所以我们对权值进行shuffle操作,最后的结果是一致的,而且还省略了一个op

(二)试验

shuffle op代码如下:

def channel_shuffle(x, groups):
    # type: (torch.Tensor, int) -> torch.Tensor
    batchsize, num_channels, height, width = x.data.size()
    channels_per_group = num_channels // groups

    # reshape
    x = x.view(batchsize, groups, channels_per_group, height, width)
    x = torch
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值