计算 f=x^2-2xy+3y^2=2x-2y 最小时x与y的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import tensorflow as tf

x = tf.Variable(tf.constant(1.0))
y = tf.Variable(tf.constant(2.0))
loss = tf.square(x) - tf.multiply(tf.multiply(x, y), 2.0) + tf.multiply(3.0, tf.square(y)) + tf.multiply(2.0, x) - tf.multiply(2.0, y)


optimizer = tf.train.GradientDescentOptimizer(0.05)
train = optimizer.minimize(loss)

# 初始化变量
init = tf.initialize_all_variables()

# 启动图 (graph)
sess = tf.Session()
sess.run(init)


for step in range(0, 201):
sess.run(train)
if step % 20 == 0:
print( step, sess.run(x), sess.run(y))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
0 1.0 1.6
20 -0.320484 0.281646
40 -0.796801 0.0841678
60 -0.939242 0.0251667
80 -0.981833 0.00752503
100 -0.994568 0.00225003
120 -0.998376 0.000672782
140 -0.999514 0.000201154
160 -0.999855 6.01531e-05
180 -0.999956 1.80066e-05
200 -0.999987 5.38831e-06
220 -0.999996 1.60342e-06
240 -0.999999 4.94772e-07
260 -1.0 1.60986e-07
280 -1.0 1.43105e-07
300 -1.0 1.43105e-07

f=x^2-2xy+3y^2=2x-2y 最小时 x = -1 y = 0