首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与环和不同的PyTorch向量和

与环和不同的PyTorch向量和
EN

Stack Overflow用户
提问于 2022-11-27 21:11:52
回答 1查看 19关注 0票数 0

我使用torch 1.7.1,我注意到向量化和与循环中的和不同,如果重复这些指标。例如:

代码语言:javascript
复制
import torch

indices = torch.LongTensor([0,1,2,1])
values = torch.FloatTensor([1,1,2,2])
result = torch.FloatTensor([0,0,0])

looped_result = torch.zeros_like(result)

for i in range(indices.shape[0]):
    looped_result[indices[i]] += values[i]

result[indices] += values

print('result:',result)
print('looped result:', looped_result)

在以下方面的成果:

代码语言:javascript
复制
 result tensor: ([1., 2., 2.])
 looped result tensor: ([1., 3., 2.])

正如您所看到的,环变量有正确的和,而向量化的变量没有。是否可以避免循环而仍然得到正确的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 21:57:59

这里的问题是,您要在同一个索引上多次索引result,对于这个内部操作,该索引肯定会失败。相反,您需要使用的是index_add or index_add_,例如(作为代码片段的延续):

代码语言:javascript
复制
>>> result_ia = torch.zeros_like(result)
>>> result_ia.index_add_(0, indices, values)
tensor([1., 3., 2.]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74593825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档