Come usare LeakyRelu come funzione di attivazione in sequenza DNN in keras? Quando si perfeziona meglio di Relu?


14

Come si usa LeakyRelu come funzione di attivazione nella sequenza DNN in keras? Se voglio scrivere qualcosa di simile a:

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

Qual'è la soluzione? Metti LeakyRelu simile a Relu?

La seconda domanda è: quali sono le migliori impostazioni generali per l'ottimizzazione dei parametri di LeakyRelu? Quando le sue prestazioni sono significativamente migliori di Relu?

Risposte:


15

Puoi usare il livello LeakyRelu , come nella classe python, invece di specificare semplicemente il nome della stringa come nel tuo esempio. Funziona in modo simile a un livello normale.

Importa LeakyReLU e crea un'istanza di un modello

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

Essere in grado di scrivere semplicemente ad es. activation='relu'È reso possibile grazie a semplici alias creati nel codice sorgente.


Per la tua seconda domanda:

quali sono le migliori impostazioni generali per l'ottimizzazione dei parametri di LeakyRelu? E quando le sue prestazioni sono significativamente migliori di Relu?

Non posso darti le impostazioni ottimali per LeakyReLU, temo - saranno dipendenti dal modello / dati.

La differenza tra ReLU e LeakyReLU è la capacità di quest'ultimo di conservare un certo grado dei valori negativi che vi scorrono, mentre il primo imposta semplicemente tutti i valori inferiori a 0 su 0. In teoria, questo intervallo di output esteso offre un flessibilità leggermente superiore al modello che lo utilizza. Sono sicuro che gli inventori lo hanno ritenuto utile e forse lo hanno dimostrato per alcuni benchmark. In pratica, tuttavia, le persone generalmente si limitano a ReLU, poiché i vantaggi di LeakyReLU non sono coerenti e ReLU è più economico da calcolare e quindi i modelli si allenano leggermente più velocemente.


1

Credo che la domanda riguardasse l'uso di LeayReLU nell'API funzionale di Keras . Che sarebbe simile a questo:

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

```

0

LeakyRelu consente un piccolo gradiente quando l'unità non è attiva (negativa):

f(X)=un'lphun'*XperX<0,
f(X)=XperX> =0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.