2015-12-27 38 views

回答

0

你可以用火炬的permute來實現numpy的rollaxis的效果。而rollaxis要求一個軸的開始和結束位置移動,permute需要所有軸的新位置。例如。對於三維張量np.rollaxis(x, 0, 3)(將第一個軸移動到最後)將相當於x:permute(2, 3, 1)

我不知道numpy的roll是一個簡單的替代品,但scatter看起來像一個體面的候選人。在換班後用所需尺寸和元素的新順序調用它。 (需要對每個單排元件中的一個新的訂單。) 以下示例沿着最後軸的x(含有2行和4列與隨機值)2每行向右移動:

th> x = torch.zeros(2, 4):uniform(0, 10) 
th> y = torch.zeros(2, 4):scatter(2, torch.LongTensor{{3, 4, 1, 2}, {3, 4, 1, 2}}, x) 
th> x 
0.7295 3.2218 7.3979 5.5500 
8.4354 3.6722 5.5463 3.4323 
[torch.DoubleTensor of size 2x4] 
th> y 
7.3979 5.5500 0.7295 3.2218 
5.5463 3.4323 8.4354 3.6722 
[torch.DoubleTensor of size 2x4] 
+0

謝謝,numpy的roll? –

+0

Oups,我添加了一個滾動編輯。 – aleju

+0

再次感謝,這可能會工作,但我正在與非常長的張量,所以它是不實際的...因此,我想如果你不得不實現不同尺寸的滾動張量在變量班中你會怎麼做? –

0

也許你可以試試lutorpy,這樣你就可以在Python中使用numpy數組,然後將它傳遞給火炬模塊並將其轉換回來。