Wie verwende ich LeakyRelu als Aktivierungsfunktion in der Sequenz DNN in Keras? Wenn es besser funktioniert als Relu?

14

Wie verwendet man LeakyRelu als Aktivierungsfunktion in der Sequenz DNN in Keras? Wenn ich etwas Ähnliches schreiben möchte wie:

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

Was ist die Lösung? Setzen Sie LeakyRelu ähnlich wie Relu?

Die zweite Frage lautet: Was ist die beste allgemeine Einstellung zum Einstellen der Parameter von LeakyRelu? Wann ist die Leistung deutlich besser als bei Relu?

user10296606
quelle

Antworten:

15

Sie können die LeakyRelu- Ebene verwenden wie in der Python-Klasse verwenden, anstatt nur den Zeichenfolgennamen wie in Ihrem Beispiel anzugeben. Es funktioniert ähnlich wie eine normale Ebene.

Importieren Sie die LeakyReLU und instanziieren Sie ein Modell

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

Das einfache Schreiben von zB activation='relu'wird durch einfache Aliase ermöglicht, die im Quellcode erstellt werden.


Für Ihre zweite Frage:

Was ist die beste allgemeine Einstellung zum Einstellen der Parameter von LeakyRelu? Und wenn seine Leistung deutlich besser ist als die von Relu?

Ich fürchte, ich kann Ihnen keine optimalen Einstellungen für die LeakyReLU geben - sie werden modell- / datenabhängig sein.

Der Unterschied zwischen der ReLU und der LeakyReLU besteht in der Fähigkeit der letzteren, einen gewissen Grad der darin fließenden negativen Werte beizubehalten, während die ersteren einfach alle Werte unter 0 auf 0 setzen. Theoretisch bietet dieser erweiterte Ausgabebereich a etwas höhere Flexibilität für das Modell, das es verwendet. Ich bin sicher, die Erfinder hielten es für nützlich und haben vielleicht bewiesen, dass dies bei einigen Benchmarks der Fall ist. In der Praxis halten sich die Leute jedoch im Allgemeinen nur an die ReLU, da die Vorteile der LeakyReLU nicht konsistent sind und die ReLU billiger zu berechnen ist und Modelle daher etwas schneller trainieren.

n1k31t4
quelle
1

Ich glaube, die Frage betraf die Verwendung von LeayReLU innerhalb der Keras Functional API . Welches würde ungefähr so ​​aussehen:

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

```
Wellenreiter
quelle
0

LeakyRelu erlaubt einen kleinen Gradienten, wenn das Gerät nicht aktiv ist (negativ):

f(x)=einlpheinxzumx<0,
f(x)=xzumx> =0.

ranaFire
quelle