TensorFlow调用global_variables_initializer时出现FailedPreconditionError错误求助
替换TensorFlow变量后触发FailedPreconditionError的排查指南
嘿,碰到这种变量替换后出TensorFlow错误的情况我太熟了,来帮你捋捋:你原本有一段能正常运行的TensorFlow代码,把变量a替换成b之后就炸出了FailedPreconditionError,错误回溯如下:
--------------------------------------------------------------------------- FailedPreconditionError Traceback (most recent call last) c:\programdata\anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args) 1138 try: -> 1139 return fn(*args) 1140 except errors.OpError as e: c:\programdata\anaconda3\lib\site-packages\tensorflow\python\...
最可能的原因&解决办法
- 变量
b没初始化:TensorFlow的变量必须先初始化才能用!你之前肯定给a做过初始化,但替换成b后大概率忘了给b做初始化操作。最快的解决方式是在会话里执行tf.global_variables_initializer().run(),或者单独给b初始化:b.initializer.run()。 b的定义上下文不对:比如你把b定义在了另一个计算图里,或者在创建会话后才定义的b,导致会话找不到这个变量。检查下b的定义位置,确保和原来的a在同一个计算图里,或者在使用b前让会话关联正确的图。- 资源没清理干净:如果之前跑过
a的相关操作,可能残留了一些占用资源的状态,替换成b后冲突了。试试重启你的TensorFlow会话,甚至重启Python环境,清空之前的变量和图缓存。 b的类型/形状和a不匹配:别光看变量名,仔细对比下a和b的定义——如果b的数据类型(dtype)或者张量形状和a不一样,也可能触发这个错误。比如原来a是tf.float32,你定义b的时候写成了tf.int32,这就会出问题。
要是能把b的定义代码、初始化逻辑贴出来,我能帮你更精准定位问题哦~
内容的提问来源于stack exchange,提问作者medi
相关产品推荐
相关产品推荐

