tensorflow (2) 简单的回归问题

本文通过生成随机数据集,使用TensorFlow实现了一个简单的线性回归模型,并应用梯度下降法进行参数优化,展示了从数据生成到模型训练及结果可视化全过程。

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

1.简单的线性回归,定义一百个点,x由随机正态分布生成,y由已知的线性关系加随机噪声生成。

2.x,y相当于监督学习中的输入数据和数据标签。

3.用tf定义一个线性模型 ,其中w,b随机生成

4.根据输入x,得到输出y_,再根据y和y_求出损失值loss,梯度反向优化w,b

#-*- coding:UTF-8 -*-

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

point = 100  #定义100组训练数据
vectors = []

for i in range(point):
    x = np.random.normal(0.0,0.66)   #随即数据,均值为0,方差为0.66的正态分布随机取值
    y = 0.1*x + 0.2 +np.random.normal(0.0,0.04) #y = 0.1x+0.2+随机正态噪声
    vectors.append([x,y])  #[[x1,y1],[x2,y2]....[x100,y100]]

#定义输入数据和标签
x_data = [v[0] for v in vectors]  #[x1,x2...x100]
y_data = [v[1] for v in vectors]  #[y1,y2...y100]

#定义模型
W = tf.Variable(tf.random_uniform([1],-1.0,1.0)) #均匀分布,一维,-1到1之间随机生成,tf.random_uniform参见https://www.w3cschool.cn/tensorflow_python/tensorflow_python-rnix2gv7.html
b = tf.Variable(tf.zeros([1])) #初始偏置为0,打印格式为 [0.](与w格式相同)
y = W*x_data + b

loss = tf.reduce_mean(tf.aquare(y - y_data)) #损失值为标签值减去输出值平方和后取均值

optimizer = tf.train.GradientDescentOptimizer(0.5) #梯度下降优化,学习率0.5

train = optimizer.minimize(loss)   #训练并最小化损失值

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

init = tf.global_variables_initializer()  #初始化所有tf变量命令

sess.run(init)  #会话中初始化

for step in range(20):
    sess.run(train)   #训练(目标就是loss最优)
    print("第 {} 步的 损失={}, 权重={}, 偏差={}".format(step+1,sess.run(loss),sess.run(W),sess.run(b)))

#画图部分用到pyplot
plt.plot(x_data, y_data, 'r*', label="Original data")  # 红色星形的点
plt.title("Linear Regression using Gradient Descent")  # 标题,表示 "梯度下降解决线性回归"
plt.plot(x_data, sess.run(W) * x_data + sess.run(b), label="Fitted line")  # 拟合的线
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.show()

# 关闭会话
sess.close()






 

在使用TensorFlow 2进行线性回归练习时,我们首先需要导入所需的库,包括TensorFlow和NumPy。 接下来,我们可以定义输入数据和目标变量。假设我们有一组输入数据X和对应的目标变量y,我们可以使用NumPy创建这些数据。 然后,我们需要创建模型。在线性回归中,模型是一个线性方程,可以通过TensorFlow的密集层(Dense)来实现。我们可以使用Sequential模型来创建一个简单的线性模型,并添加一个密集层。 接下来,我们需要定义优化器和损失函数。对于线性回归问题,我们可以使用均方误差(Mean Squared Error, MSE)作为损失函数,并选择合适的优化器,如随机梯度下降(SGD)。 然后,我们可以使用compile()方法编译模型,指定优化器和损失函数。编译模型后,我们可以使用fit()方法来拟合模型。通过指定输入数据和目标变量,以及训练的批次大小和训练的迭代次数,可以在训练集上训练模型。 在训练完模型后,我们可以使用evaluate()方法评估模型在测试集上的性能。 最后,我们可以使用predict()方法对新的数据进行预测。通过将新的输入数据传递给predict()方法,可以得到对应的目标变量的预测值。 综上所述,使用TensorFlow 2进行线性回归练习可以分为以下步骤:导入库、定义输入数据和目标变量、创建模型、定义优化器和损失函数、编译模型、拟合模型、评估模型性能、预测新的数据。通过完成这些步骤,我们可以进行线性回归练习,并得到模型在给定数据上的预测结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值