我想将torch.Tensor
的元素顺序从默认更改为numpy.ndarray
。换句话说,我想对其进行混洗,以便使用numpy数组指定其元素的顺序。关于此问题的重要一点是,我不希望创建任何第三个对象(由于内存限制)
python 2.7中是否有下面的代码?
torch_tensor.shuffle(order)
答案 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])
我希望这大致就是您想要的!