Как предотвратить деление на ноль или заменить бесконечные значения в системе?
Я использую функцию стоимости в Theano, которая включает в себя термин регуляризатора, который требует, чтобы я вычислил этот термин:
T.sum(c / self.squared_euclidean_distances)
Как некоторые ценности самости.squared_euclidean_distances может быть равно нулю, что приводит к значениям Nan. Как я могу обойти эту проблему? Я попытался использовать т. исинфа, но не преуспел. Одним из решений было бы удаление нулей в самом себе.squared_euclidean_distances в небольшом количестве или заменить бесконечные числа в т. суммы(с / самовывоз.squared_euclidean_distances) до нуля. Я просто не знаю, как заменить эти ценности в будущем.
1 ответ:
Взгляните на
T.switch
. Вы могли бы сделать, например,T.switch(T.eq(self.squared_euclidean_distances, 0), 0, c / self.squared_euclidean_distances)
(или, наоборот, вы убедитесь, что никогда не сравниваете вектор с самим собой, используя квадрат евклидова расстояния.)