我使用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()..)?我是否必须在每一层之间插入传递函数?
非常感谢。
答案 0 :(得分:2)
如上所述,我使用了所有Tanh()传递函数,这是正确的吗?
这是正确的,并且使用任何其他传递函数都是正确的。
我可以使用其他转移功能(如Sigmoid()..)?
是的,您可以使用任何传输函数,每个函数都有自己的属性,这是以SO形式表达的方式,但是现在您可能会发现ReLU是最常用的属性之一,尤其是在更深层次的网络中。
我是否必须在每一层之间插入传递函数?
是的,如果你不这样做 - 从数学上说你的层崩溃(连续的线性层至少在最终行为意义上表现为单个线性层 - 训练可能会有所不同)。