我正在尝试重复学习(https://www.sciencedirect.com/science/article/pii/S0957417410011711)
在研究中,他们使用两种不同的功能,一种用于隐藏层,另一种用于输出。在5314页上,他们写道:“在隐藏层上选择了切线S型传递函数。另一方面,在输出层上使用了逻辑S型传递函数。”
我在R中使用软件包“ neuralnet”。
为了使隐藏层具有切线S型传递函数,我可以使用以下代码:
act.fct = 'tanh'
但这会产生一个问题,我要么要么A)对输出层都具有SAME函数。
或者B)我使用linear.output = T
,它给了我线性输出,但没有S型函数。我是否有可能对输出层使用其他功能?
同样,如果我使用act.fct = 'logistic'
,我将获得整个网络的逻辑S形传递函数,这给了我输出层正确的功能,而隐藏层却错了。这又一次只占我一半。
我有一个粗略的解决方案,我不想使用的方法,应该可以使用err.fct =
并创建一个使用线性的自定义误差函数输出并通过所需的S型函数运行该输出。然后,我分别通过Sigmoid函数运行compute
命令的输出。但这似乎很麻烦,很可能我会一路搞砸。有什么合适/更好的解决方案吗?
答案 0 :(得分:1)
R软件包neuralnet
似乎不支持隐藏层中的激活功能。请查看软件包keras
为您解决此问题。
model <- keras_model_sequential()
model %>%
layer_dense(units = 100, activation = 'tanh') %>%
layer_dropout(rate = 0.2) %>%
layer_dense(units = 1, activation = 'sigmoid')