坑 之 Tensor XXX must be from the same graph as Tensor XXX

从报错信息上就能看出来我们的问题出在哪里,就是说我们的两个tensor来自两个不同的计算图,这样执行时自然会报错,那么是什么语原因呢?先看一下出错的代码:

.......
src = src_path + "/" + file
print("start to process %s"%src)
img = tf.read_file(src)
img_org = tf.image.decode_jpeg(img)
#----------------------------------------#
tf.reset_default_graph()#重置默认图。这也是我们的问题所在
with tf.Session() as sess:
    op = pre_process_img(img_org, dims=image_size, precision="fp32", MIN_DIMENSION = 256)
    res = sess.run(op)

.......

出错的原因就是,代码在执行前维护一个默认图,我们的img和img_org都是声明在默认的图中的,然而,我们又使用了tf.reset_default_graph函数重置了图,所以就会出现两张不同的图,自然会产生我们之前遇到的问题
解决办法:

tf.reset_default_graph()
with tf.Session() as sess:
     src = src_path + "/" + file
     print("start to process %s"%src)
     img = tf.read_file(src)
     img_org = tf.image.decode_jpeg(img)
     op = pre_process_img(img_org, dims=image_size, precision="fp32", MIN_DIMENSION = 256)
     res = sess.run(op)
           

将所有的变量初始化工作放在tf.reset_default_graph操作之后,使其在同一张计算图中
类似的会改变默认图的操作还有:tf.Graph().as_default()等,也有可能会产生这个错误,大家需要注意,注意这种问题的产生原因和解决思路即可

猜你喜欢

转载自blog.csdn.net/qq_41368074/article/details/111641212