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

本文解析了在TensorFlow代码中重置默认图引发的错误,并提供了修复方法:确保所有变量在`tf.reset_default_graph()`之后初始化,避免不同计算图间的操作。常见问题源自`tf.Graph().as_default()`等改变图行为的函数。

从报错信息上就能看出来我们的问题出在哪里,就是说我们的两个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()等,也有可能会产生这个错误,大家需要注意,注意这种问题的产生原因和解决思路即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值