starałem się wdrożyć soft-max z następującego kodu (out_vec
jest numpy
wektor pływaków):RuntimeWarning: nieprawidłowa wartość napotkanych w większym
numerator = np.exp(out_vec)
denominator = np.sum(np.exp(out_vec))
out_vec = numerator/denominator
Jednak mam błąd przepełnienia z powodu np.exp(out_vec)
. Dlatego sprawdziłem (ręcznie), jaki jest górny limit np.exp()
i ustalono, że np.exp(709)
jest liczbą, ale np.exp(710)
jest uważane za np.inf
. Tak więc, aby spróbować uniknąć błędu przepełnienia, zmodyfikowałem mój kod w następujący sposób:
out_vec[out_vec > 709] = 709 #prevent np.exp overflow
numerator = np.exp(out_vec)
denominator = np.sum(np.exp(out_vec))
out_vec = numerator/denominator
Teraz mam inny błąd:
RuntimeWarning: invalid value encountered in greater out_vec[out_vec > 709] = 709
Co jest nie tak z linii I dodaje? Sprawdziłem ten konkretny błąd i znalazłem tylko porady ludzi, jak zignorować ten błąd. Po prostu ignorowanie błędu nie pomoże mi, ponieważ za każdym razem, gdy mój kod napotka ten błąd, nie daje to zwykłych rezultatów.
'' out_vec' tablica zawiera wartości Inf' NaN' lub '? – kvorobiev
@kvorobiev, czy wiesz, jak mogłem złapać ostrzeżenie, aby sprawdzić? – Cheshie
Spróbuj 'np.isnan (np.sum (out_vec))' – kvorobiev