2012-12-18 67 views
2

有人可以告诉我如何在pybrain中实现步激活函数吗?Pybrain神经网络步传递函数

例如。我不能在pybrain.structure.modules找到任何实现?

感谢

编辑

我现在明白了,你可以扩展pybrain并创建自己的图层。但是,我仍然不确定如何根据文档做到这一点。有人可能会告诉我一个如何创建一个实现步骤激活功能的图层的例子吗?

+0

是否http://pybrain.org/docs/tutorial/extending-structure.html解决您的问题? – mmgp

+0

您能否告诉我一个如何使用上述函数作为传递函数的例子?我不完全理解如何从文档中做到这一点:( – Sherlock

+1

源代码后,我到达http://nullege.com/codes/show/src%40p%40y%40PyBrain-0.3%40pybrain%40structure% 40modules%40gate.py/11/pybrain.tools.functions.sigmoid/python。我相信你应该清楚。 – mmgp

回答

2

如果你想在反向传播训练的多层网络中使用它,那么这是不可能的。 step函数不是(sub)可微分,这是backprop算法的要求。

,可以得出一个阶梯函数最接近会像

f(x) = max(-1, min(x, 1)) 

的函数的x值以产生1和-1之间的值,其片段(可以这样改变为0和1如果你喜欢)。此功能有一个子导出

f'(x) = 1 if -1 < x < 1 
     0 otherwise 
+0

我将使用这个层作为输出层,隐藏层将使用sigmoid函数。我能够在输出层使用step函数吗? – Sherlock

+0

@Relax_Im_A_Quant:no。输出激活函数必须是可微分的以计算隐藏到输出层的梯度。根据任务的不同,您可以使用在[铰链损失](https://en.wikipedia.org/)下训练的线性输出单元。 wiki/Hinge_loss)来近似一个步骤单元。我对PyBrain并不熟悉,所以我不确定它是否允许激活函数和丢失函数的解耦。 –

+0

很棒 - 感谢您的详细回复。如果我要使用不同的训练算法,例如遗传算法,那么我是否可以使用步进功能? – Sherlock