¿Cómo utilizar LeakyRelu como función de activación en la secuencia DNN en keras? ¿Cuándo funciona mejor que Relu?

14

¿Cómo se usa LeakyRelu como función de activación en secuencia DNN en keras? Si quiero escribir algo similar a:

 model = Sequential()
    model.add(Dense(90, activation='LeakyRelu'))

¿Cuál es la solución? ¿Poner LeakyRelu similar a Relu?

La segunda pregunta es: ¿cuál es la mejor configuración general para ajustar los parámetros de LeakyRelu? ¿Cuándo es su rendimiento significativamente mejor que Relu?

usuario10296606
fuente

Respuestas:

15

Puede usar la capa LeakyRelu , como en la clase python, en lugar de solo especificar el nombre de la cadena como en su ejemplo. Funciona de manera similar a una capa normal.

Importe LeakyReLU e instancia un modelo

from keras.layers import LeakyReLU
model = Sequential()

# here change your line to leave out an activation 
model.add(Dense(90))

# now add a ReLU layer explicitly:
model.add(LeakyReLU(alpha=0.05))

Ser capaz de escribir simplemente, por ejemplo, activation='relu'es posible gracias a los alias simples que se crean en el código fuente.


Para su segunda pregunta:

¿Cuáles son los mejores ajustes generales para ajustar los parámetros de LeakyRelu? ¿Y cuando su rendimiento es significativamente mejor que Relu?

Me temo que no puedo darle configuraciones óptimas para LeakyReLU, serán dependientes del modelo / datos.

La diferencia entre ReLU y LeakyReLU es la capacidad de este último para retener cierto grado de los valores negativos que fluyen hacia él, mientras que el primero simplemente establece que todos los valores menores que 0 sean 0. En teoría, este rango de salida extendido ofrece un flexibilidad ligeramente superior al modelo que lo usa. Estoy seguro de que los inventores pensaron que era útil y tal vez demostraron que ese era el caso de algunos puntos de referencia. Sin embargo, en la práctica, las personas generalmente se adhieren al ReLU, ya que los beneficios del LeakyReLU no son consistentes y el ReLU es más económico de calcular y, por lo tanto, los modelos se entrenan un poco más rápido.

n1k31t4
fuente
1

Creo que la pregunta era sobre el uso de LeayReLU dentro de la API funcional de Keras . Lo que se vería así:

from keras.layers import LeakyReLU
...
x = Dense(128)(x)
x = LeakyReLU(alpha=0.3)(x)

```
Montador de olas
fuente
0

LeakyRelu permite un pequeño gradiente cuando la unidad no está activa (negativa):

F(X)=unalpagshunaXparaX<0 0,
F(X)=XparaX> =0.

ranaFire
fuente