【问题标题】:How to understand the code "cc[bb] += aa" in pytorch?如何理解pytorch中的代码“cc[bb] += aa”?
【发布时间】:2022-07-07 18:40:00
【问题描述】:
import torch
aa=torch.tensor([[1,2,3],[4,5,6]]).T
bb=torch.tensor([0,1,1]).T
cc = torch.zeros(2, 2)
cc[bb] += aa

那么结果是cc=tensor([[1., 4.],[3., 6.]]),为什么?

【问题讨论】:

  • 您了解其中的哪些部分?在声明之前,您检查过aabbcc 的状态吗?

标签: python pytorch


【解决方案1】:

让我们用伪代码推理:

>>> aa = [[1,2,3],
          [4,5,6]].T
>>> aa
[[1,4],
 [2,5],
 [3,6]]

>>> bb = [0,1,1].T
>>> b
[0,
 1,
 1]

>>> cc = zeros(2, 2)
>>> cc
[[0,0],
 [0,0]]

下一条指令是一个赋值,它首先用cc 索引bb 值。在这里,我们使用bb 中的索引从cc 中挑选整行。由于bb 中有三行,因此生成的张量将由cc[bb[0]]cc[bb[1]]cc[bb[2]] 组成,但bb[1]bb[2] 相等,这意味着它归结为cc[0] 和@987654333 @。

右侧操作数是aa,由三行组成:[1,4][2,5][3,6]。这意味着执行的最终操作将等同于(按行):

cc[0] += [1,4]
cc[1] += [3,6]

由于cc 被初始化为零值,我们可以总结为:

>>> cc[0] = [1,4]
>>> cc[1] = [3,6]

这意味着:

>>> cc
[[1,4],
 [3,6]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    相关资源
    最近更新 更多