tensorflow exp限制为最大值而不是无穷大?

kninwzqo  于 2023-03-19  发布在  其他
关注(0)|答案(3)|浏览(127)

我使用的损失函数中有一个exp项,它将损失放大到无穷大,然后导致梯度变为NaNs......目前有办法处理这个问题吗?

s = tf.exp(n)  
# s becomes nan when n is large
rxztt3cl

rxztt3cl1#

损失函数中的指数项在机器学习中通常不是通过最小化指数本身,而是通过最小化其对数来处理。这两个函数都是单调的新月形,所以最小化对数会比最小化指数带来相同的最小值。然而,对数增长得慢得多,从而避免了损失函数的巨大增长。
这里似乎需要直接在n上最小化,但可能这只是一个示例。

6ojccjat

6ojccjat2#

logit_upper_bound = 88 #因为tf.exp(89)会产生INF
s = tf.exp(tf.最小值(n,logit_上限))

o75abkj4

o75abkj43#

例如,您可以使用以下命令:
loss = tf.minimum(tf.exp(n), MAX_VALUE)
这将返回最大元素,因此您需要考虑到这一点。

相关问题