vb 实现二维数组(矩阵)转置。_矩阵的旋转与转置(inplace)

最近实现tensorflow模型转换为caffe前向计算的时候存在一个数据维度的问题,即tf的数据格式一般习惯把channel放在最后一维,caffe一般放在第一维;即将一个dxc的二维矩阵转置成为cxd;如何不需要额外内存的情况下,完成这一操作;

具体如图所示:

c57f6b6af9d765a0c3a6f16e366e31c6.png

可以按照上图找一下规律,发现:

6b54f832f96d089c4cdf84cdbbf22c82.png

可以发现,数据的移动可以演变为一个循坏;遍历完每个“环”,那么任务就完成了;

循环过程需要找到后继节点;

int getNext(int i, int m, int n)  //m为转置后的行数,n为转置后的列数
{
      
    return (i%n)*m + i/n;  
}  

填补的时候需要找到前驱节点;

int getPre(int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值