神经网络的传递函数

时间:2016-02-20 23:18:47

标签: machine-learning neural-network deep-learning torch

我使用torch7构建了3个隐藏层神经网络来处理分类问题(3个类)。但我对使用什么传递函数以及如何使用它们感到困惑。以下是我的网络结构:

net:add(nn.Linear(inputs, hid_1))
net:add(nn.Tanh())
net:add(nn.Linear(hid_1, hid_2))
net:add(nn.Tanh())
net:add(nn.Linear(hid_2, hid_3))
net:add(nn.Tanh())
net:add(nn.Linear(hid_3, outputs))
net:add(nn.LogSoftMax())

criterion = nn.ClassNLLCriterion()

如上所述,我使用了所有Tanh()传递函数,这是正确的吗?我可以使用其他转移功能(如Sigmoid()..)?我是否必须在每一层之间插入传递函数?

非常感谢。

1 个答案:

答案 0 :(得分:2)

  

如上所述,我使用了所有Tanh()传递函数,这是正确的吗?

这是正确的,并且使用任何其他传递函数都是正确的。

  

我可以使用其他转移功能(如Sigmoid()..)?

是的,您可以使用任何传输函数,每个函数都有自己的属性,这是以SO形式表达的方式,但是现在您可能会发现ReLU是最常用的属性之一,尤其是在更深层次的网络中。

  

我是否必须在每一层之间插入传递函数?

是的,如果你不这样做 - 从数学上说你的层崩溃(连续的线性层至少在最终行为意义上表现为单个线性层 - 训练可能会有所不同)。