我正在尝试了解pytorch的工作原理。通常,在定义神经网络类时,在 init ()构造函数中,人们编写self.sigmoid = nn.Sigmoid(),以便在forward()方法中可以调用sigmoid函数每次都必须重新实例化nn.Sigmoid()。
但是nn.Sigmoid为什么不只是一个方法而不是一个类呢?
此外,我很好奇在torch.nn中将“ nn”称为(包?库?)。
谢谢!
答案 0 :(得分:2)
Sigmoid可作为模块torch.nn.Sigmoid
和函数torch.sigmoid
使用。两者是等效的:模块只是函数的包装。
主要由于历史原因而存在该模块:PyTorch基于Lua torch7软件包。在torch7中,所有可区分的神经网络功能均作为模块实现。该模块也可以在torch.nn.Sequential
块中用于具有简单前馈结构的网络。
除此之外,与功能形式相比,使用模块形式没有任何优势。
nn
中的torch.nn
代表“神经网络”。
答案 1 :(得分:1)
我的理解是nn.Sigmoid
可以与其他nn层组成,例如:
net = nn.Sequential(
nn.Linear(3, 4),
nn.Sigmoid())
如果您不需要此功能,则可以使用torch.sigmoid
函数。