就地随机播放火炬。按numpy.ndarray顺序排列的张量

时间:2018-12-07 16:38:12

标签: python numpy pytorch

我想将torch.Tensor的元素顺序从默认更改为numpy.ndarray。换句话说,我想对其进行混洗,以便使用numpy数组指定其元素的顺序。关于此问题的重要一点是,我不希望创建任何第三个对象(由于内存限制) python 2.7中是否有下面的代码?

torch_tensor.shuffle(order)

1 个答案:

答案 0 :(得分:1)

编辑: 这应该是就地版本:

import torch
import numpy as np

t = torch.rand(10)
print('Original Tensor:', t)

order = np.array(range(10))
np.random.shuffle(order)
print('Order:', order)

# in-place changing of values
t[np.array(range(10))] = t[order]
print('New Tensor:', t)

输出:

Original Tensor: tensor([ 0.3380,  0.3450,  0.2253,  0.0279,  0.3945,  0.6055,  0.1489,
         0.7676,  0.4213,  0.2683])
Order: [7 1 3 6 2 9 0 5 4 8]
New Tensor: tensor([ 0.7676,  0.3450,  0.0279,  0.1489,  0.2253,  0.2683,  0.3380,
         0.6055,  0.3945,  0.4213])

我希望这大致就是您想要的!