我正在尝试使用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
这些机制之间有什么区别?哪个更适合哪个目的?
答案 0 :(得分:2)
激活函数只是非线性函数,没有任何参数。因此,您的第一种方法没有任何意义!
但是,您可以使用sequential包装器将线性层与tanh
激活组合在一起。
model = nn.Sequential(
nn.Linear(n_in, n_out),
nn.Tanh()
)
output = model(input)