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

时间:2019-03-18 19:35:15

标签: pytorch

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

2 个答案:

答案 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的反向传播会在对生成器进行延迟评估时遇到麻烦,但是目前还不确定。