使用Tensorflow优化python中的函数

时间:2019-06-24 18:16:40

标签: python tensorflow optimization

我是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”))。我该如何用张量流做到这一点?

最好, 迈克尔

1 个答案:

答案 0 :(得分:0)

您需要重写函数do_something,以将张量用作输入并返回标量张量(即,创建计算图)。然后,以下代码是如何对函数执行优化的草图。 (顺便说一句,在您的代码fun_testdo_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