ReLU和LeakyRelu之间的实现差异

时间:2018-05-29 16:55:51

标签: python keras

我知道这些激活的定义不同,但是,在阅读ReLU's documentation时,它会将参数alpha作为输入,默认为0,并说

  

RELU

     

relu(x,alpha = 0.0,max_value = None)整流线性单位。

     

参数

     

x :输入张量。 alpha:负面部分的斜率。默认为零。   max_value:输出的最大值。返回

     

(泄漏的)整流线性单元激活:x,如果x> 0,alpha * x if   x< 0.如果定义了max_value,则结果将被截断为此值。

还有一个带similar documentation的LeakyReLU,但作为其他模块的一部分(高级激活)

它们之间有区别吗?以及我如何导入relu以使用alpha实例化它?

from keras.layers.advanced_activations import LeakyReLU
..
..
model.add(Dense(512, 512, activation='linear')) 
model.add(LeakyReLU(alpha=.001)) # using Relu insted of LeakyRelu

请注意,使用LeakyReLU时,我收到以下错误:

AttributeError: 'LeakyReLU' object has no attribute '__name__'

但是当我使用ReLU时,它可以工作:

model.add(Activation('relu')) # This works correctly but can't set alpha

总结:什么是差异?如何导入ReLU以通过aplha?

1 个答案:

答案 0 :(得分:2)

就实现而言,他们call使用相同的后端函数K.relu。区别在于relu是激活函数,而LeakyReLU是在Layer下定义的keras.layers。所以区别在于你如何使用它们。对于激活函数,您需要环绕或使用内部层Activation,但LeakyReLU为您提供了具有alpha值的该函数的快捷方式。