Как предотвратить деление на ноль или заменить бесконечные значения в системе?


Я использую функцию стоимости в Theano, которая включает в себя термин регуляризатора, который требует, чтобы я вычислил этот термин:

T.sum(c / self.squared_euclidean_distances)

Как некоторые ценности самости.squared_euclidean_distances может быть равно нулю, что приводит к значениям Nan. Как я могу обойти эту проблему? Я попытался использовать т. исинфа, но не преуспел. Одним из решений было бы удаление нулей в самом себе.squared_euclidean_distances в небольшом количестве или заменить бесконечные числа в т. суммы(с / самовывоз.squared_euclidean_distances) до нуля. Я просто не знаю, как заменить эти ценности в будущем.

1 4

1 ответ:

Взгляните на T.switch. Вы могли бы сделать, например,

T.switch(T.eq(self.squared_euclidean_distances, 0), 0, c / self.squared_euclidean_distances)

(или, наоборот, вы убедитесь, что никогда не сравниваете вектор с самим собой, используя квадрат евклидова расстояния.)