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

本文介绍了在Python 3.6和TensorFlow 1.8.0环境下,通过PyCharm进行线性模型的训练。线性模型公式为y=Weights*x+biases,初始权重和偏置随机生成。采用梯度下降算法,逐步调整Weights和biases,使其接近真实模型的参数0.1和0.3,从而减少预测误差。经过201次训练,模型参数已接近真实值,达到训练目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境: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 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值