TensorFlow打印变量报错:Variable已存在问题求助
解决TensorFlow变量已存在的报错问题
首先,这个报错的核心原因是TensorFlow的计算图没有被重置——哪怕你在Spyder里清除了Python层面的变量,TensorFlow的默认计算图里已经存在名为"my_int_variable"的变量节点了,再次调用tf.get_variable()时就会触发冲突。
给你几个实用的解决办法:
方法1:每次运行代码前重置默认计算图
在导入TensorFlow之后先重置默认图,确保每次运行都是全新的计算环境:
import tensorflow as tf # 重置默认计算图,清除之前的节点记录 tf.reset_default_graph() # 定义变量(注意补全initializer的括号) my_int_variable = tf.get_variable("my_int_variable", [1, 2, 3], dtype=tf.int32, initializer=tf.zeros_initializer()) # 运行会话打印变量 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(my_int_variable))
方法2:使用变量作用域开启复用模式(适合需要复用变量的场景)
如果你确实需要在同一个计算图里复用该变量,可以通过变量作用域开启自动复用:
import tensorflow as tf with tf.variable_scope("my_var_scope", reuse=tf.AUTO_REUSE): my_int_variable = tf.get_variable("my_int_variable", [1, 2, 3], dtype=tf.int32, initializer=tf.zeros_initializer()) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(my_int_variable))
方法3:重启Spyder内核
如果上面的方法都没生效,直接重启Spyder的Python内核(菜单栏选择Kernel -> Restart),这样会彻底清除所有之前的计算图和变量状态,从头开始运行代码。
另外注意你的代码里tf.zeros_initiali是拼写错误,应该补全为tf.zeros_initializer()哦。
内容的提问来源于stack exchange,提问作者notnotundefined
相关产品推荐
相关产品推荐

