gpt4 book ai didi

python - 尝试使用未初始化的值变量 - Tensorflow (Python)

转载 作者:行者123 更新时间:2023-11-30 22:20:47 24 4
gpt4 key购买 nike

我是 Tensorflow 新手,我不明白为什么会收到此错误,因为我认为我已经初始化了所有变量。

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable_2
[[Node: Variable_2/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_2"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_2)]]

它似乎属于以下summary_ops:

File "/Users/ldg/PycharmProjects/TF", line 274, in train
summary_ops = setup_summaries()
File "/Users/ldg/PycharmProjects/TF.py", line 238, in setup_summaries
logged_epsilon = tf.Variable(0.)

我将相关代码放在一起以使其清晰。

g = tf.Graph()
session = tf.InteractiveSession(graph=g)
with g.as_default(), session.as_default():
K.set_session(session)
num_actions = get_num_actions()
graph_ops = build_graph(num_actions)
saver = tf.train.Saver()

session.run(tf.global_variables_initializer())
# session.run(init_op)

# Initialize target network weights
session.run(graph_ops["reset_target_network_params"])

# Set up game environments (one per thread)
envs = [gym.make(FLAGS.game) for i in range(FLAGS.num_concurrent)]

summary_ops = setup_summaries()
summary_op = summary_ops[-1]

# Initialize variables
summary_save_path = summary_dir + "/" + experiment
writer = tf.summary.FileWriter(summary_save_path, session.graph)
if not os.path.exists(checkpoint_dir):
os.makedirs(checkpoint_dir)


# Show the agents training and write summary statistics
last_summary_time = 0
while True:
now = time.time()
if now - last_summary_time > FLAGS.summary_interval:
summary_str = session.run(summary_op)
writer.add_summary(summary_str, float(T))
last_summary_time = now

封装的setup_summaries()

def setup_summaries():
episode_reward = tf.Variable(0.)
tf.summary.scalar("Episode Reward", episode_reward)
episode_ave_max_q = tf.Variable(0.)
tf.summary.scalar("Max Q Value", episode_ave_max_q)
logged_epsilon = tf.Variable(0.)
tf.summary.scalar("Epsilon", logged_epsilon)
logged_T = tf.Variable(0.)
summary_vars = [episode_reward, episode_ave_max_q, logged_epsilon]
summary_placeholders = [tf.placeholder("float") for i in range(len(summary_vars))]
update_ops = [summary_vars[i].assign(summary_placeholders[i]) for i in range(len(summary_vars))]
summary_op = tf.summary.merge_all()
return summary_placeholders, update_ops, summary_op

我到处查看了 Stackoverflow 上的类似帖子,但我找不到解决方案,而且真的不明白我在哪里没有初始化我的变量。

预先感谢您的帮助。

最佳答案

您需要将全局变量初始值设定项放在summary_setup之后。该问题是由于您在运行初始化程序后声明 tf.variable 引起的。以下代码片段有效

import tensorflow as tf
with tf.Graph().as_default():
sess = tf.Session()
with sess.as_default():

summary_ops = setup_summaries()
summary_op = summary_ops[-1]
sess.run(tf.global_variables_initializer())
sess.run(summary_op)

关于python - 尝试使用未初始化的值变量 - Tensorflow (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48772761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com