今天 让我遇到了一个非常气的问题,弄了几个小时,终于搞懂了。。。
问题描述:
import tensorflow as tf #tf.__version__ = 1.14
index = tf.constant([2,2])
tensor = tf.random.uniform(shape=[1,1])
output = tf.gather_nd(tensor, index)
with tf.Session() as sess:
print(sess.run(output))
这一段类似的代码,在我pycharm上调试,报错如下:

随便一想就能明白,index的大小超出了tensor的范围。然而奇怪的事情发生了

我在我程序上发现了类似的错误,但是程序依然执行,比吃了一罐子泻药都顺畅。我尝试检查逻辑错误、sess的作用范围等。根本无过。
最后发现,使用bash执行上边的代码,竟然tmd不报错!
后来查了API,明晃晃的写着

初步推测可能是不知道某种原因,pycharm执行使用了cpu,但是bash启动执行了gpu。有待考证。。。
以后先看报错函数的文档吧。。。。
本文探讨了一个关于TensorFlow 1.x中tf.gather_nd函数使用时遇到的奇怪现象:在PyCharm环境中因索引超出范围而报错,但在Bash环境中却能正常运行。通过API文档和进一步研究发现,这可能是由于执行环境(CPU vs GPU)的不同所导致。
9630





