Tensorflow 使用 Gradient Descent(梯度下降) 分析 Linear Regression(线性回归)

本文通过Python和TensorFlow实现了一个简单的线性回归模型,使用梯度下降法进行参数优化。首先模拟了一组数据并绘制成图表,然后构建了线性回归模型,并定义了损失函数和优化器。经过多次迭代训练后,成功拟合出了最佳的直线。

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

# _*_ coding:UTF-8 _*_
#引入相关依赖
import tensorflow as tf
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

plot_num = 100
vectors= []
#模拟原始数据
for i in range(plot_num):
    x1 = np.random.normal(0,0.66)
    y1 = 0.1 * x1 + 0.2 + np.random.normal(0,0.04)
    vectors.append([x1,y1])

x_data = [v[0] for v in vectors]

y_data = [v[1] for v in vectors]

#画出原始点图

plt.plot(x_data,y_data,'r*',label='Original data')
plt.title('Linear Regression using Gradient Descent')
plt.legend()
plt.savefig('./file.png',dpi=150)

#构建线性回归模型
W = tf.Variable(tf.random_uniform([1],-1.0,1.0))
b = tf.Variable(tf.zeros(1))
y = W * x_data + b


#定义损失函数
loss = tf.reduce_mean(tf.square(y-y_data))

#梯度下降优化器优化我们的损失函数
optimizer = tf.train.GradientDescentOptimizer(0.5)  #设置学习率为0.5

train = optimizer.minimize(loss)

#创建会话
sess=tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

#训练20步
for x in range(20):
    sess.run(train)
    print 'Step={},Loss={},Weight={},Bias={}'.format(x,sess.run(loss),sess.run(W),sess.run(b))

#绘制拟合直线
plt.plot(x_data,y_data,'r*',label='Original data')
plt.plot(x_data,sess.run(W) * x_data + sess.run(b),label='Fitted data')
plt.title('Linear Regression using Gradient Descent')
plt.legend()

plt.savefig('./file1.png',dpi=150)

#关闭会话

sess.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值