我是tensorflow的新手,试图了解如何在机器学习环境之外使用。我想使用tensorflow的ADAM实现来优化python函数。
假设我具有以下功能:
def fun_test(x):
"""
:param x: List of parameters, e.g. [1,2,3]
:return: real value
"""
res=do_something(x)
return res
当使用scipy时,我会称其为“ scipy.minimize(fun_test,x0,method =“ Nelder-Mead”))。我该如何用张量流做到这一点?
最好, 迈克尔
答案 0 :(得分:0)
您需要重写函数do_something
,以将张量用作输入并返回标量张量(即,创建计算图)。然后,以下代码是如何对函数执行优化的草图。 (顺便说一句,在您的代码fun_test
和do_something
中没有真正的区别,所以我选择了后者。)
x = tf.get_variable("x", dtype=..., initializer=...)
target = do_something(x)
opt = tf.train.AdamOptimizer(...).minimize(target) # Defines one optimization step
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) # Initialize x
NUM_STEPS = 1000
for _ in range(NUM_STEPS):
sess.run(opt) # Run optimization for NUM_STEPS steps
print(sess.run(x)) # Show values of x
print(sess.run(target)) # Show target value