环境: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,如下图示。
训练结果:

代码如下:
import tensorflowas tf
import numpyas 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)#激活该模型
for stepin range(201):
sess.run(train)#开始训练
if step %20 ==0:
print(step,sess.run(Weights),sess.run(biases))
学自 莫烦PYTHON
网友评论