【问题标题】:Is it possible to update different rows of a pytorch Tensor in different ways?是否可以以不同的方式更新 pytorch 张量的不同行?
【发布时间】:2021-06-05 04:14:29
【问题描述】:

我什至在互联网上找到有同样问题的人都遇到了一些麻烦,因为它很难简洁地表达......:/

基本上我的问题是我有一个 pytorch 张量,称之为 n:

tensor([[2., 2., 2., 2.],
        [2., 2., 2., 2.],
        [2., 2., 2., 2.]])

我想以下列方式更改列的值:

tensor([[1., 1., 1., 1.],
        [1., 2., 1., 1.],
        [2., 2., 1., 2.]])

即对于第一列,我希望索引 0:2 为 1,对于第二列,我希望索引 0:1 为 1,等等。

我尝试以这种方式定义开始和结束张量,但它似乎不起作用:

start = torch.Tensor([0, 0, 0, 0])
end = torch.Tensor([2, 1, 3, 2])
n[start: end] = 1

但这不起作用,我得到一个 typeError:

TypeError:只有单个元素的整数张量可以转换为索引

我不确定这是否可以通过内置的 torch 操作实现,或者我是否必须手动遍历 n 的每一行。

【问题讨论】:

    标签: python pytorch tensor


    【解决方案1】:

    我认为在这种情况下这是最简单的

    t = torch.tensor([[2., 2., 2., 2.],
            [2., 2., 2., 2.],
            [2., 2., 2., 2.]])
    
    t[0:2,0] = 1
    t[0:1,1] = 1
    t[:,2] = 1
    t[0:2,3] = 1
    print(t)
    
    tensor([[1., 1., 1., 1.],
            [1., 2., 1., 1.],
            [2., 2., 1., 2.]])
    
    

    我也不明白为什么会有一个内置的操作来从本质上改变矩阵中的一个值/值。特别是因为您仍然需要给出要更改哪些值的说明。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2019-11-25
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      相关资源
      最近更新 更多