在Theano中,有没有办法将整流线性单元(ReLU)作为隐藏层的激活函数来替代tanh()
或sigmoid()
?隐藏层的实现如下所示,据我所查,ReLU并未在Theano中实现。
class HiddenLayer(object): def __init__(self, rng, input, n_in, n_out, W=None, b=None, activation=T.tanh): pass
回答:
在Theano中实现ReLU非常简单:
switch(x<0, 0, x)
要在你的情况下使用它,可以创建一个实现ReLU的Python函数,并将其传递给activation参数:
def relu(x): return theano.tensor.switch(x<0, 0, x)HiddenLayer(..., activation=relu)
有些人使用这种实现方式:x * (x > 0)
更新:较新版本的Theano提供了theano.tensor.nnet.relu(x)可供使用。