gpt4 book ai didi

python - 在 tf.Session() 中循环

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:15 27 4
gpt4 key购买 nike

在我的 TensorFlow 项目中,我想尝试不同的优化器,理想情况下我会遍历它们,这样我就可以比较 TensorBoard 中的训练。我已经提取了优化位,因为它失败了。我有这样的东西:

import os
import tensorflow as tf

eta = 0.1
num_epochs = 100

xv = tf.Variable(0.0)
sv = tf.Variable(0, trainable=False)

loss = xv * xv - 4.0 * xv + 5.0

optimizers = [tf.train.GradientDescentOptimizer(eta),
tf.train.AdagradOptimizer(eta),
tf.train.AdamOptimizer(eta)]

init = tf.global_variables_initializer()

saver = tf.train.Saver()

summary_op = tf.summary.scalar('x', xv)
writer = tf.summary.FileWriter('log', graph=tf.get_default_graph())

with tf.Session() as sess:
sess.run(init)
for optimizer in optimizers:
objective = optimizer.minimize(loss, global_step=sv)
for epoch in range(num_epochs):
_, step, result, summary = sess.run([objective, sv, xv, summary_op])
writer.add_summary(summary, global_step=step)
writer.flush()
saver.save(sess, os.getcwd() + '/output')
print(sess.run(xv))

它失败了 Errors may have originated from an input operation.
Input Source operations connected to node Adagrad/update_Variable_2/ApplyAdagrad:
Variable_2 (defined at <stdin>:1)

这样的事情可以在 TensorFlow 中完成吗?或者我是否使用了错误的 session ,因为我试图在同一个 session 中多次从头开始运行相同的东西而不重新初始化变量?我不确定如何实现这一目标。我尝试将循环放在 tf.Session() 之外但这也不起作用。

最佳答案

我们通常只将一个优化器附加到同一组变量。

当你调用optimizer.minimize(loss)时,tensorflow会自动选择影响loss的变量进行优化。对同一损失调用 3 次 optimizer.minimize(loss) 并交替调用 session.run(...) 是不可取的。

如果你希望比较3个优化器,最好使用3个脚本分别测试每个优化器。

此外,您应该只为任何优化器调用一次optimizer.minimize(...),因为重复调用该函数只会向图中添加新操作。实际计算是在您调用 session.run(...)

时执行的

关于python - 在 tf.Session() 中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657805/

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