美文网首页
使用TensorFlow和梯度下降算法训练线性模型

使用TensorFlow和梯度下降算法训练线性模型

作者: 乱世佳人_c160 | 来源:发表于2018-05-30 11:38 被阅读0次

环境: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

相关文章

网友评论

      本文标题:使用TensorFlow和梯度下降算法训练线性模型

      本文链接:https://www.haomeiwen.com/subject/dxstsftx.html