火炬Tensor的sum和torch.sum有什么区别?

问题描述 投票:0回答:2

当使用python sum或torch.sum时,我得到相同的结果,为什么火炬实现了sum函数?它们之间有区别吗?

pytorch
2个回答
0
投票

什么都没有,torch.sumtensor.sum和python的sum__add__(或需要的__radd__)再次调用tensor.sum

所以唯一的区别在于函数调用的数量,并且tensor.sum()应该是最快的(当你有小张量并且函数调用的开销相当大)


0
投票

看起来python的总和可以将生成器作为输入,而torch.sum不能:

import torch print( sum( torch.ones(1)*k for k in torch.arange(10))) 返回tensor([45.]),而:

print( torch.sum( torch.ones(1)*k for k in torch.arange(10))) 引发TypeError: sum(): argument 'input' (position 1) must be Tensor, not generator

我假设pyTorch的反向传播会对发生器的惰性评估遇到麻烦,但还不确定。

© www.soinside.com 2019 - 2024. All rights reserved.