Open Hongru0306 opened 8 months ago
在使用rearrange前维度使用view发生了变化,这是我加入前面的view做的实验,希望对你有用
feature = torch.arange(36).view(9, 2, 2) print('feature: ', feature) feature = feature.view(1, 9, 2, 2) #c*kernel**2,h,w -> c k**2 h w 获得感受野空间特征 conv_data = rearrange(feature, 'c (n1 n2) h w ->c (h n1) (w n2)', n1=3,n2=3) # c k**2 h w -> c h*k w*k print('conv_data: ', conv_data)
feature: tensor([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]], [[12, 13], [14, 15]], [[16, 17], [18, 19]], [[20, 21], [22, 23]], [[24, 25], [26, 27]], [[28, 29], [30, 31]], [[32, 33], [34, 35]]]) conv_data: tensor([[[ 0, 4, 8, 1, 5, 9], [12, 16, 20, 13, 17, 21], [24, 28, 32, 25, 29, 33], [ 2, 6, 10, 3, 7, 11], [14, 18, 22, 15, 19, 23], [26, 30, 34, 27, 31, 35]]])
谢谢!感谢大佬解答!
@Hongru0306 不好意思,好久没上Github了,你要注意位置的变化。 ,你写的是 out = rearrange(demo, '(k1 k2) w h -> 1 (k1 w) (k2 h)', k1=3, k2=3) 而实际上是 out = rearrange(demo, '(k1 k2) w h -> 1 (w k1) ( h k2)', k1=3, k2=3)。
您好,非常感谢您的工作!
但是我看到源码中对于shape的更改是这样的:
看到您的论文里关于adjust shape的描述是这样的:
对于rearrange这个库我实践了一下是这样的结果:
这个结果与图中的adjust好像不一样,并不是小矩阵对应左上角的的元素全都集中在adjust后的左上区域,而是将9个小矩阵顺序排列的,没有改变矩阵内部的关系,这样的话并没有对图像做类似放大的操作,而只是将图像进行了排列,这样对于权重共享问题是为什么work的呢?
十分期待您的解答!!