Jadi saya mencoba menulis fungsi aktivasi ELU dan input ke dalam fungsi akan menjadi array bentuk 1D (20,1) dan outputnya harus berupa array yang serupa dengan aktivasi yang diterapkan untuk setiap elemen dalam array. Masalahnya adalah meskipun saya telah melakukan ini dengan sigmoid atau tanh dan seterusnya, untuk ELU kami memiliki pemeriksaan bersyarat untuk nilai pada indeks yang diberikan.

def elu(x): 
    d=np.zeros_like(x, dtype=float)  
    d[x<=0]=alpha * (np.exp(x) - 1)
    d[x>0]=x
    return d

Inilah yang saya miliki sejauh ini, tetapi tidak berhasil, karena saya memanggil fungsi np.exp pada array itu sendiri, jadi hasilnya adalah array, tetapi saya mencoba untuk menetapkan nilai array itu menjadi satu elemen. Pertanyaannya adalah, bagaimana saya mengakses elemen yang memenuhi kondisi tersebut dan menggantinya dengan nilai ekspresi itu, yaitu alpha*(np.exp(x)-1).

Alternatifnya adalah membuat loop for untuk menggilir setiap elemen satu per satu untuk memperbarui array atau membuat metode bekerja pada skalar tunggal dan kemudian ketika memanggil aktivasi, siklus melalui input dan panggil aktivasi secara individual setiap kali untuk setiap elemen (dan kemudian lakukan hal yang sama saat memanggil turunannya).

0
pSYoniK 8 Maret 2020, 12:26

1 menjawab

Jawaban Terbaik

Anda mendapatkan ketidakcocokan dimensi karena Anda mencoba menetapkan array dengan dimensi yang berbeda. Anda perlu memfilter juga x, yaitu:

def elu(x): 
    d=np.zeros_like(x, dtype=float)  
    d[x<=0]=alpha * (np.exp(x[x<=0]) - 1)
    d[x>0]=x[x>0]
    return d
1
FBruzzesi 8 Maret 2020, 10:17