PyTorch 中的层类型及其激活函数有何区别?

What are the differences between type of layer and its activation function in PyTorch?

我正在尝试使用 pytorch 编写一些简单的神经网络。我是这个图书馆的新手。我遇到了两种实现相同想法的方法:一个具有固定激活函数(例如 tanh)的层。

第一种实现方式:

l1 = nn.Tanh(n_in, n_out)

第二种方式:

l2 = nn.Linear(n_in, n_out) # linear layer, that do nothing with its input except summation

但在前向传播中使用:

import torch.nn.functional as F
x = F.tanh(l2(x)) # x - value that propagates from layer to layer

这些机制之间有什么区别?哪种用途更好?

激活函数只是一个 non-linear 函数,它没有任何参数。所以,你的第一种方法没有任何意义!

但是,您可以使用 sequential 包装器将线性层与 tanh 激活相结合。

model = nn.Sequential(
    nn.Linear(n_in, n_out),
    nn.Tanh()
)
output = model(input)