0
我碰到这两条线来(背到后端)在火炬项目的代码:火炬张量交换尺寸
im4[{1,{},{}}] = im3[{3,{},{}}]
im4[{3,{},{}}] = im3[{1,{},{}}]
什么这两行吗?我认为他们做了某种交换。
我碰到这两条线来(背到后端)在火炬项目的代码:火炬张量交换尺寸
im4[{1,{},{}}] = im3[{3,{},{}}]
im4[{3,{},{}}] = im3[{1,{},{}}]
什么这两行吗?我认为他们做了某种交换。
这会在索引中使用空表{}
的Torch Tensor Documentation
索引是该维度的所有指标的简写。下面是使用{}
一整行从一个矩阵复制到另一个演示:
> a = torch.Tensor(3, 3):fill(0)
0 0 0
0 0 0
0 0 0
> b = torch.Tensor(3, 3)
> for i=1,3 do for j=1,3 do b[i][j] = (i - 1) * 3 + j end end
> b
1 2 3
4 5 6
7 8 9
> a[{1, {}}] = b[{3, {}}]
> a
7 8 9
0 0 0
0 0 0
这种分配等同于:a[1] = b[3]
。
你的例子是类似的:
im4[{1,{},{}}] = im3[{3,{},{}}]
im4[{3,{},{}}] = im3[{1,{},{}}]
其更清楚地表述为:
im4[1] = im3[3]
im4[3] = im3[1]
第一行从im3
的第三行(一个二维子矩阵),以分配的值im4
的第一行,第二行将im3
的第一行分配给im4
的第三行。
请注意,这不是交换,因为im3
从不写入,并且im4
从不读取。
火炬是否有固定的表格文字?火炬中的{} == {}'是否返回true?因为如果没有那么有效,那么使用'= nil'作为这两行的右边。 –