我试图在训练我的图时计算权重的熵,并将其用于正则化。这当然涉及到w*tf.log(w)
,当我的权重发生变化时,其中一些权重一定会进入一个区域,从而导致返回NaNs。
理想情况下,我会在图形设置中包含一条线:
w[tf.is_nan(w)] = <number>
但是tensorflow不支持这样的赋值。当然,我可以创建一个操作,但这不起作用,因为我需要在整个图的执行过程中执行它。我迫不及待地要执行图形,然后“修复”我的权重,这必须是图形执行的一部分。
我在文档中找不到与np.nan_to_num
等价的内容。
有人知道吗?
(显然,添加epsilon不起作用)
我想你需要用tf.select。
更新:TensorFlow 1.0有deprecated} 。
tf.select
支持Numpy兼容^{不能将nan转换为数字(例如不能将infinite转换为数字)。
当w为(或包含)0时,nan结果很可能来自
w*tf.log(w)
。您可以先添加1e-6,这样就不会出现被零除的情况。相关问题 更多 >
编程相关推荐