当前位置:   article > 正文

reshape和transpose的区别_transpos和reshape区别

transpos和reshape区别

reshape填充的顺序,从最后一个维度开始赋值。 

transpose与reshape的最大区别:

reshape修改的只是维度,填充顺序不变

transpose修改的是轴,填充顺序改变

anchor_target_layer:

bbox_targets = bbox_targets.reshape((1, height, width, A * 4)).transpose(0, 3, 1, 2):

下面的例子是在caffe版本的,pytorch的同理:

all_anchors = all_anchors.view(h*w * 9, 4)

bbox_targets.ndim  (h*w * A , 4)_>(1, height, width, A * 4),只有相邻的hwA4你才能随意拆开然后和左右重组。

bbox_targets = bbox_targets.reshape((1, height, width, A * 4)).transpose(0, 3, 1, 2)#1  9*4 h w

 

再来anchor_target_layer中np.meshgrid后ravel然后vstack再transpose得到的shifts为例。

直观的看:shifts.ndim=(H*W,4),注意我写的是H*W,而不是W*H。

因为它是逐行添加的,具体可看下面x对应w,y对应h,填充y=0第一行,所有列,然后填充第二行。

x0y0x1y1
0000
1010
2020
............
0101
1111
2121
............

      因为填充方式的问题,先填充后维度的,所以shifts.reshape(h,w,4)可以理解为:第i行填充了所有列,然后填充i+1行所有列。

      但是,不可以shifts.reshape(w,h,4),因为这样的理解是:第i列填充了所有行,然后填充所有列。

      你只可以shifts.reshape(h,w,4).transpose(1,0,2),这里又涉及到transposetranspose(1,0,2)表示原先的第1维作为现在的0维,原先的第0维作为现在的第1维,第二维不变。
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/154130?site
推荐阅读
相关标签
  

闽ICP备14008679号