Softmax overflow [ditutup]


11

Menunggu kursus selanjutnya Andrew Ng di Coursera, saya mencoba memprogram classifier Python dengan fungsi softmax pada layer terakhir untuk memiliki probabilitas yang berbeda. Namun, ketika saya mencoba menggunakannya pada dataset CIFAR-10 (input: (3072, 10000)), saya mengalami overflow ketika menghitung eksponensial. Memang, saya memiliki angka seperti 5000, 10000 atau 25000.

Saya sudah mencoba dua hal:

  • kurangi konstanta ke matriks sebelum menghitung eksponensial tetapi saya memiliki perbedaan besar antara angka-angka jadi, saya tidak bisa melakukan itu.
  • menghitung eksponensial dari log matriks tetapi masih melimpah.

Adakah yang bisa membantu saya menghindari masalah ini?

Terima kasih

EDIT: https://github.com/Kentena/softmax/


Ribuan telah memainkan set data CIFAR10 dan NNs. Anda mungkin telah mengacaukan kode Anda. Bisakah Anda menunjukkannya?
tagoma

Ya saya telah memperbarui posting saya dan memposting repositori github. Namun, kode saya tidak dikomentari: /
Dlmss

Jawaban:


17

Perhatikan itu

exsayajexj=e-me-mexsayajexj=exsaya-mjexj-m
untuk konstanta apa pun m.

Jelas itu tidak benar exsaya=exsaya-m, tetapi versi yang dinormalisasi adalah sama. Masalah Anda adalah bahwaxsayaTerlalu besar, jadi kurangi angka yang sama mdari mereka semua sebelum Anda mengambil softmax. Terkadang orang mengaturm menjadi maksimum semua xsayas.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.