Comment utiliser LeakyRelu comme fonction d'activation dans la séquence DNN dans les keras? Quand il fonctionne mieux que Relu?

14

Comment utilisez-vous LeakyRelu comme fonction d'activation dans la séquence DNN en keras? Si je veux écrire quelque chose de similaire à:

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

Quelle est la solution? Mettez LeakyRelu similaire à Relu?

La deuxième question est: quel est le meilleur réglage général pour régler les paramètres de LeakyRelu? Quand ses performances sont-elles significativement meilleures que celles de Relu?

user10296606
la source

Réponses:

15

Vous pouvez utiliser la couche LeakyRelu , comme dans la classe python, au lieu de simplement spécifier le nom de la chaîne comme dans votre exemple. Il fonctionne de manière similaire à un calque normal.

Importez le LeakyReLU et instanciez un modèle

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))

La possibilité d'écrire simplement, par exemple, activation='relu'est rendue possible grâce aux alias simples qui sont créés dans le code source.


Pour votre deuxième question:

quel est le meilleur réglage général pour régler les paramètres de LeakyRelu? Et quand ses performances sont nettement meilleures que Relu?

Je ne peux pas vous donner les paramètres optimaux pour le LeakyReLU, je le crains - ils dépendront du modèle / des données.

La différence entre le ReLU et le LeakyReLU est la capacité de ce dernier à conserver un certain degré des valeurs négatives qui y pénètrent, tandis que le premier définit simplement toutes les valeurs inférieures à 0 à 0. En théorie, cette plage de sortie étendue offre une flexibilité légèrement supérieure au modèle l'utilisant. Je suis sûr que les inventeurs l'ont trouvé utile et ont peut-être prouvé que c'était le cas pour quelques repères. En pratique, cependant, les gens s'en tiennent généralement au ReLU, car les avantages du LeakyReLU ne sont pas cohérents et le ReLU est moins cher à calculer et les modèles s'entraînent donc légèrement plus rapidement.

n1k31t4
la source
1

Je crois que la question portait sur l'utilisation de LeayReLU dans l' API fonctionnelle Keras . Qui ressemblerait à quelque chose comme ceci:

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

```
WaveRider
la source
0

LeakyRelu permet un petit gradient lorsque l'unité n'est pas active (négative):

f(x)=alphaxforx<0,
f(x)=xforx>=0.

ranaFire
la source