Я попытался реализовать soft-max со следующим кодом (out_vec
является вектором float numpy
):
numerator = np.exp(out_vec)
denominator = np.sum(np.exp(out_vec))
out_vec = numerator/denominator
Однако, я получил ошибку переполнения из-за np.exp(out_vec)
. Поэтому я проверил (вручную), каков верхний предел np.exp()
, и обнаружил, что np.exp(709)
является числом, но np.exp(710)
считается np.inf
. Таким образом, чтобы избежать ошибки переполнения, я изменил свой код следующим образом:
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
Теперь я получаю другую ошибку:
RuntimeWarning: invalid value encountered in greater out_vec[out_vec > 709] = 709
Что случилось с линией, которую я добавил? Я просмотрел эту конкретную ошибку, и все, что я нашел, это советы людей о том, как игнорировать ошибку. Просто игнорирование ошибки не поможет мне, потому что каждый раз, когда мой код сталкивается с этой ошибкой, он не дает обычных результатов.