代码之家  ›  专栏  ›  技术社区  ›  Marzi Heidari

原地摇动火炬。张量按numpy.ndarray的顺序

  •  1
  • Marzi Heidari  · 技术社区  · 6 年前

    torch.Tensor 从违约到违约 numpy.ndarray . 换句话说,我想对它进行洗牌,以便用numpy数组指定其元素的顺序;这个问题最重要的一点是,我不希望创建任何第三个对象(因为内存限制)

    torch_tensor.shuffle(order)
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   MBT Nina Golyandina    6 年前

    这应该是一个就地版本:

    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])