在R中的Neuralnet中使用两个不同的S型函数

时间:2018-12-10 15:11:09

标签: r neural-network output backpropagation sigmoid

我正在尝试重复学习(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命令的输出。但这似乎很麻烦,很可能我会一路搞砸。有什么合适/更好的解决方案吗?

1 个答案:

答案 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')