我在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中替换这些值。
答案 0 :(得分:8)
看看T.switch
。你可以做例如
T.switch(T.eq(self.squared_euclidean_distances, 0), 0, c / self.squared_euclidean_distances)
(或者,在上游,你确保你永远不会使用平方的欧氏距离来比较矢量。)