# 用一个平面拟合三位数据
x_data = np.float32(np.random.rand(2, 100))
y_data = np.dot([0.100, 0.200], x_data) + 0.300
# 构造线性模型
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b
# 最小化方差
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# 初始化变量
init = tf.initialize_all_variables()
# 启动图(graph)
sess = tf.Session()
sess.run(init)
# 拟合平面
for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
sess.close()
结果:
0 [[0.00154144 0.49300897]] [0.5025239]
20 [[0.05363116 0.2450393 ]] [0.301935]
40 [[0.08966148 0.2107851 ]] [0.30002123]
60 [[0.09771726 0.20261088]] [0.29987863]
80 [[0.09950284 0.20064011]] [0.2999343]
100 [[0.09989388 0.20015924]] [0.29997358]
120 [[0.09997801 0.20004022]] [0.29999056]
140 [[0.09999567 0.20001036]] [0.2999968]
160 [[0.09999923 0.20000269]] [0.29999897]
180 [[0.09999988 0.20000072]] [0.29999968]
200 [[0.09999999 0.2000002 ]] [0.2999999]