如何防止除以零或替换Theano中的无限值?

时间:2014-10-29 01:21:29

标签: python numpy nan divide-by-zero theano

我在Theano中使用了一个成本函数,它涉及一个规范化术语,需要我计算这个术语:

T.sum(c / self.squared_euclidean_distances)

由于self.squared_euclidean_distances的某些值可能为零,因此会产生Nan值。我该如何解决这个问题?我尝试使用T.isinf,但没有成功。一种解决方案是将self.squared_euclidean_distances中的零删除为一个小数字,或将T.sum(c / self.squared_euclidean_distances)中的无限数字替换为零。我只是不知道如何在Theano中替换这些值。

1 个答案:

答案 0 :(得分:8)

看看T.switch。你可以做例如

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

(或者,在上游,你确保你永远不会使用平方的欧氏距离来比较矢量。)