环境:PyCharm 2.018.1.3 x64 ,Python 3.6 ,TensorFlow   version:1.8.0

线性模型为:y=Weights*x+biases;

真实模型:y_=0.1*x+0.3,Weights_=0.1,biases_=0.3;

预测模型:y=Weights*x+biases,Weights的初值和biases的初值随机生成;

计算y_和y的误差,并使用梯度下降算法修正预测模型中的Weights值和biases值,随着训练次数的增加,这个两个值不断接近真实值(Weights接近0.1,biases接近0.3),从而误差也不断减少,当预测值非常接近真实值时,该模式就可视为训练完成。

当训练次数到201次时,Weights接近0.1,biases接近0.3,如下图示。

训练结果:

使用TensorFlow和梯度下降算法训练线性模型
代码如下:
import tensorflow as tf
import numpy as np

#create data
x_data=np.random.rand(100).astype(np.float32)#随机产生100个float32的数据作为输入数据
y_data=x_data*0.1+0.3#真实值

#搭建模型
Weights=tf.Variable(tf.random_uniform([1],-1,0,1.0))#随机生成Weights初值,1维结构,介于[-1,1]之间
biases=tf.Variable(tf.zeros([1]))#随机生成biases初值,一维结构,值为0

y=Weights*x_data+biases#预测值

#计算误差
loss=tf.reduce_mean(tf.square(y-y_data))

#传播误差
#使用梯度下降算法减少误差
optimizer=tf.train.GradientDescentOptimizer(0.5)#0.5为梯度下降算法学习效率,介于[0,1]之间
train=optimizer.minimize(loss)

#训练
init=tf.global_variables_initializer()
sess=tf.Session()
sess.run(init)#**模型
print("step    Weights     biases")
for step in range(201):
    sess.run(train)#开始训练
    if step % 20 ==0:
        print(step,sess.run(Weights),sess.run(biases))
学自 莫烦PYTHON

相关文章: