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)
我正在尝试使用 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)