我正在尝试重复一项研究(https://www.sciencedirect.com/science/article/pii/S0957417410011711)
在研究中,他们使用了两种不同的函数,一种用于隐藏层,一种用于输出。在第 5314 页上,他们写道“在隐藏层上选择了一个正切 sigmoid 传递函数。另一方面,在输出层上使用了一个逻辑 sigmoid 传递函数。”
我在 R 中使用包“neuralnet”。
为了对隐藏层有一个切线 sigmoid 传递函数,我可以使用以下代码:
act.fct = 'tanh'
但这会产生一个问题,我要么 A) 对输出层具有相同的功能。
或者 B)我使用linear.output = T
which 给我一个线性输出,但不是一个 sigmoid 函数。有什么方法可以让我为输出层设置另一个功能吗?
同样:如果我使用act.fct = 'logistic'
,我将在整个网络中获得一个逻辑 sigmoid 传递函数,为输出层提供正确的函数,但为隐藏层提供错误的函数。这又只带我走了一半。
我有一个粗略的替代方法来解决这个问题,我不想使用这种方法,应该可以使用err.fct =
并创建一个自定义的误差函数,该函数使用线性输出并通过所需的 sigmoid 函数运行它,用于输出。compute
然后我通过 sigmoid 函数分别运行命令的输出。但这似乎很麻烦,很可能我会在途中的某个地方搞砸。对此有任何适当/更好的解决方案吗?