【发布时间】:2018-05-29 11:07:23
【问题描述】:
我正在尝试使用 adagrad 优化器最小化 x*x。我希望得到 x=0 作为结果,但我得到的值 x 接近初始值。
import tensorflow as tf
x=tf.Variable(-2.)
sq=x*x
o = tf.train.AdamOptimizer(1e-1).minimize(sq)
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run([init])
sess.run([o])
r=sess.run([x])
print("done",r)
结果我得到 -1.9,而不是预期的 0。
我是否正确理解 -2 是这里的初始值,还是其他什么? AdamOptimiser 是只执行一步还是可以启动它以进行持续优化?我如何得到 x=0 作为结果?
【问题讨论】:
-
sess.run([o])只运行一个步骤。您应该将此行包装在一个循环中,例如 100 次迭代。 -
请把它作为答案,所以我可以接受。也可能有一些标准的 TF 方法来避免写 for i in range(1000) 吗?
标签: tensorflow