torch.sigmoid、torch.nn.Sigmoid和torch.nn.functional.sigmoid的区别

  review代码的时候发现我使用的是torch.sigmoid,pycharm标黄cannot find reference 'sigmoid' in '__init__.py'于是产生了这样的疑问,这三者的区别是啥。

0x00. 官网解释

  • torch.sigmoid
    torch.sigmoid、torch.nn.Sigmoid和torch.nn.functional.sigmoid的区别
      我们可以看到,这是一个方法,拥有Parametrs和Returns。
  • torch.nn.Sigmoid

torch.sigmoid、torch.nn.Sigmoid和torch.nn.functional.sigmoid的区别

torch.sigmoid、torch.nn.Sigmoid和torch.nn.functional.sigmoid的区别
  可以看到官网文档在左上角标注着显眼的CLASS,同时根据Examples我们可以得出结论,torch.nn.Sigmoid在我们的神经网络中使用时,我们应该将其看作是网络的一层而不是简单的函数使用

  • torch.nn.functional.sigmoid
    torch.sigmoid、torch.nn.Sigmoid和torch.nn.functional.sigmoid的区别
      事实上,torch.nn.functional从这个包名就能看出来,这个包里的都是函数。同样的,按照官网的文档的内容,我们也可以判断出torch.nn.funtional.sigmoid是一个方法,可以直接在我们的神经网络的forward中使用,并不需要在init的时候初始化。也就是说torch.nn.functional.sigmoid和torch.sigmoid没有什么区别,同理,本文对于其他的**函数一样适用。