I am confused with torch.xxxx which support Tensor and Variable, it should be a function accepting Variable or just a normal function which handling input tensors. But what different between torch.xxxx and torch.nn.functional.xxx when input is a Variable ?
torch.* functions work for both Tensors and Variables. There’s no difference between torch.sigmoid and torch.nn.functional.sigmoid.
3 Likes
Actually, there is a difference.
The implementations in torch.xxx have the backward implemented using python calls, while the functional counterparts have their backward implemented entirely in C/Cuda, so the functional backward code is more efficient.
20 Likes
Thanks, i see.
More different is help message, there are help text for python object, no text for registered functions in C.
1 Like
Is this still the case? If so should be writing all my code using functional api?
2 Likes
I guess this is deprecated (at least as of Pytorch 1.0.0). But since one can find it so easily via google, I wrote this reply 
UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.
warnings.warn("nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.")
5 Likes
Hi @fmassa: is this still the case?