Bagaimana cara menggunakan LeakyRelu sebagai fungsi aktivasi dalam urutan DNN dalam keras? Kapan kinerja lebih baik daripada Relu?

14

Bagaimana Anda menggunakan LeakyRelu sebagai fungsi aktivasi dalam urutan DNN di keras? Jika saya ingin menulis sesuatu yang mirip dengan:

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

Apa solusinya? Masukkan LeakyRelu mirip dengan Relu?

Pertanyaan kedua adalah: apa pengaturan umum terbaik untuk menyetel parameter LeakyRelu? Kapan kinerjanya secara signifikan lebih baik daripada Relu?

pengguna10296606
sumber

Jawaban:

15

Anda dapat menggunakan layer LeakyRelu , seperti pada kelas python, alih-alih hanya menentukan nama string seperti pada contoh Anda. Ia bekerja mirip dengan lapisan normal.

Impor LeakyReLU dan instantiate model

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

Mampu menulis misalnya activation='relu'dimungkinkan karena alias sederhana yang dibuat dalam kode sumber.


Untuk pertanyaan kedua Anda:

apa pengaturan umum terbaik untuk menyetel parameter LeakyRelu? Dan kapan kinerjanya secara signifikan lebih baik daripada Relu?

Saya tidak bisa memberi Anda pengaturan optimal untuk LeakyReLU, saya khawatir - mereka akan bergantung pada model / data.

Perbedaan antara ReLU dan LeakyReLU adalah kemampuan yang terakhir untuk mempertahankan beberapa derajat dari nilai negatif yang mengalir ke dalamnya, sementara yang pertama hanya menetapkan semua nilai kurang dari 0 menjadi 0. Secara teori, rentang output yang diperluas ini menawarkan fleksibilitas sedikit lebih tinggi untuk model yang menggunakannya. Saya yakin para penemu menganggapnya berguna dan mungkin membuktikan hal itu untuk beberapa tolok ukur. Namun dalam praktiknya, orang umumnya hanya berpegang teguh pada ReLU, karena manfaat LeakyReLU tidak konsisten dan ReLU lebih murah untuk dihitung dan karena itu model kereta sedikit lebih cepat.

n1k31t4
sumber
1

Saya percaya pertanyaannya adalah tentang menggunakan LeayReLU dalam API Fungsional Keras . Yang akan terlihat seperti ini:

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

```
WaveRider
sumber
0

LeakyRelu memungkinkan gradien kecil ketika unit tidak aktif (negatif):

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

ranaFire
sumber