2015-06-29 75 views
0

我碰到這兩條線來(背到後端)在火炬項目的代碼:火炬張量交換尺寸

im4[{1,{},{}}] = im3[{3,{},{}}] 
im4[{3,{},{}}] = im3[{1,{},{}}] 

什麼這兩行嗎?我認爲他們做了某種交換。

+0

火炬是否有固定的表格文字?火炬中的{} == {}'是否返回true?因爲如果沒有那麼有效,那麼使用'= nil'作爲這兩行的右邊。 –

回答

5

這會在索引中使用空表{}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從不讀取。