import tensorflow as tf
x = tf.get_variable('x', initializer=42.)
y = tf.square(x)
optimizer = tf.train.GradientDescentOptimizer(0.1)
train_min = optimizer.minimize(y) # minimize x*x
train_max = optimizer.minimize(-y) # maximize x*x
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for _ in range(20):
cost, _ = sess.run([y, train_min])
print(cost)
cost, _ = sess.run([y, train_max])
print(cost)
如果您不介意在完全相同的批次上最小化成本函数,您甚至可以编写
import tensorflow as tf
x = tf.get_variable('x', initializer=42.)
y = tf.square(x)
optimizer = tf.train.GradientDescentOptimizer(0.1)
train_min = optimizer.minimize(y)
with tf.control_dependencies([train_min]):
train_min_then_max = optimizer.minimize(-y)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for _ in range(20):
cost, _ = sess.run([y, train_min_then_max])
print(cost)
1 回答
是的,这是可能的:
如果您不介意在完全相同的批次上最小化成本函数,您甚至可以编写
使用单个sess.run调用进行优化 .