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'作爲這兩行的右邊。 –