【问题标题】:How to prevent division by zero or replace infinite values in Theano?如何防止被零除或替换 Theano 中的无限值?
【发布时间】:2014-10-29 01:21:28
【问题描述】:

我在 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 中替换这些值。

【问题讨论】:

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


    【解决方案1】:

    看看T.switch。例如,您可以这样做

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

    (或者,在上游,您确保永远不会使用平方欧几里德距离将向量与其自身进行比较。)

    【讨论】:

    • 我正在使用您的解决方案来查找没有循环的矩阵行的成对距离,所以我猜我不能轻易使用上游解决方案。
    • 有一个被拒绝的编辑应该被批准,将==更改为T.eq。我将自己进行此更改,因为我不知道如何重新批准被错误拒绝的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2022-07-07
    相关资源
    最近更新 更多