使用python sum或torch.sum时我得到相同的结果,那么为什么torch实施sum函数呢?它们之间有区别吗?
答案 0 :(得分:0)
什么都没有,torch.sum
调用tensor.sum
,而python的sum
调用__add__
(或在需要时__radd__
),后者再次调用tensor.sum
所以唯一的区别在于函数调用的数量,tensor.sum()
应该是最快的(当张量较小且函数调用的开销相当大时)
答案 1 :(得分:0)
似乎python的sum可以将生成器作为输入,而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的反向传播会在对生成器进行延迟评估时遇到麻烦,但是目前还不确定。