我想优化成本函数。此成本函数包含变量和非变量的其他参数。这些非变量参数是从变量中获得的。
这是一个玩具示例,说明了这一点:
import numpy as np
import tensorflow as tf
r_init = np.array([5.0,6.0])
x = tf.get_variable("x_var", initializer = r_init[0], trainable = True)
y = tf.get_variable("y_var", initializer = r_init[1], trainable = True)
def cost(x,y):
a = x
return a*((x-1.0)**2+(y-1.0)**2)
train_op = tf.train.AdamOptimizer(learning_rate=0.05).minimize(cost(x,y))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(100):
print(sess.run([cost(x,y), train_op]))
print('x=', x.eval(session=sess))
print('y=', y.eval(session=sess))
如您所见,参数a
是从变量x
定义的,另一方面a
不应该是变量,我希望优化器将其视为一个变量不变。在优化过程中更新变量x
时,应更新此常量。
如何从变量a
定义非变量参数x
?我正在做这件事,但直觉上,我想到的是:
a = tf.to_constant(x)
有什么想法吗?
答案 0 :(得分:1)