当前位置:
首页 >
【Tensorflow】tf.map_fn() 使用过程中遇到【inf, NaN】报错问题
发布时间:2023/12/15
61
豆豆
生活随笔
收集整理的这篇文章主要介绍了
【Tensorflow】tf.map_fn() 使用过程中遇到【inf, NaN】报错问题
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
采用python map 的正确写法如下
mat_ratio = list(map(lambda x: 1.0/x if not x == 0.0 else float(64.0), mat_ratio))但是,在有的时候,我们需要x是一个tensor,mat_ratio定义的是一个op graph,按照常规思维,进行如下改写:
mat_ratio = tf.map_fn(lambda x: 1.0/x if not x == 0.0 else float(64.0), mat_ratio)接下来就会看到错误了 :
InvalidArgumentError (see above for traceback): LossTensor is inf or nan : Tensor had NaN values原来在tensorflow graph 定义中,if ... else 是不被识别的,只能通过tf.cond()进行代替,下面给出一个tf.cond的例子,具体的api请查看相关文档。
z = tf.multiply(a, b) result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))根据以上例子,修改我的代码:
mat_ratio = tf.map_fn(lambda x: tf.cond(x > 0, lambda: 1/x, lambda: float(64.0)), mat_ratio)ok, 完美解决[inf, NaN]问题。
注意,在tensorflow graph中,不支持x==0的操作,只支持><这样的操作。
总结
以上是生活随笔为你收集整理的【Tensorflow】tf.map_fn() 使用过程中遇到【inf, NaN】报错问题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【CPP 小技巧 (一)FPS】统计处理
- 下一篇: 【Anaconda-Error】'num