import numpy as np
import matplotlib.pyplot as plt
num_points = 10000 #随机生成10000个点(近似y=x^2+1)
vectors_set = []
for i in range(num_points):
x1= np.random.normal(0.0, 2.0)
y1= x1 * x1 + 1 + np.random.normal(0.0, 0.03)
vectors_set.append([x1, y1])
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
#Graphic display
plt.plot(x_data, y_data, 'ro')
plt.legend()
plt.show()
import tensorflow as tf
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
y = W * x_data * x_data + b
loss = tf.reduce_mean(tf.square(y - y_data)) #损失函数(方差)
optimizer = tf.train.AdamOptimizer(0.05) #使用Adam优化器,学习率0.05
train = optimizer.minimize(loss) #
init = tf.initialize_all_variables() #初始化变量
sess = tf.Session()
sess.run(init)
for step in range(200):
sess.run(train)
if step % 10 == 0:
print(step, sess.run(W), sess.run(b))
print(step, sess.run(loss))
#Graphic display
plt.plot(x_data, y_data, 'ro')
plt.plot(x_data, sess.run(W) * x_data * x_data + sess.run(b))
plt.xlabel('x')
plt.xlim(-8,8)
plt.ylim(0,60)
plt.ylabel('y')
plt.legend()
plt.show()
运行效果如下:

在200次训练过后,可以看到w和b已经非常接近设置的w=1和b=1,从图中可以看出训练的过程(未放出,可自行尝试)