基于tensorflow最简单的模型训练示例python

这篇博客通过一个简单的例子介绍了如何使用TensorFlow进行机器学习,特别是线性模型的训练。首先,利用numpy生成随机散点数据,然后定义模型函数、模型参数,并设置训练数据的占位符。接下来,通过梯度下降优化器训练模型,不断更新k和b的值,最终得到模型的拟合曲线。整个过程展示了TensorFlow的基本用法,适合初学者入门。

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

序言

结合tensorflow拟合函数y=kx+b模型训练最简单实例,一起入门机器学习

准备数据

首先随机生成散点图数据

# import tensorflow as tf
# 上面导包找不到placeholder模块时,换下面导入方式
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

import numpy as np  # Python的一种开源的数值计算扩展
import matplotlib.pyplot as plt  # Python的一种绘图库


np.random.seed(5)  # 设置产生伪随机数的类型
sx = np.linspace(-1, 1, 100)  # 在-1到1之间产生100个等差数列作为图像的横坐标
# 根据y=2*x+1+噪声产生纵坐标
# randn(100)表示从100个样本的标准正态分布中返回一个样本值,0.4为数据抖动幅度
sy = 2 * sx + 1.0 + np.random.randn(100) * 0.4

# plt.scatter(x, y)  # 生成散点图
# plt.plot(x, 2 * x + 1, color='red', linewidth=3)  # 生成直线y=2x+1
# plt.show()

定义模型

定义模型并不会立即执行,而是要在训练时建立的session会话时运行,减少了系统对底层代码的平凡调用,这也是tensorflow的机制

# 定义函数模型,y=kx+b
def model(x, k, b):
    return tf.multiply(k, x) + b


# 定义模型中的参数变量,并为其赋初值
k = tf.Variable(1.0, dtype=tf.float32, name='k')
b = tf.Variable(0, dtype=tf.float32, name='b')

# 定义训练数据的占位符,x为特征值,y为标签
x = tf.placeholder(dtype=tf.float32, name='x')
y = tf.placeholder(dtype=tf.float32, name='y')
# 通过模型得出特征值x对应的预测值yp
yp = model(x, k, b)

训练模型

根据每轮训练得到的k,b值,可以看到模型不断地拟合

# 训练模型,设置训练参数(迭代次数、学习率)
train_epoch = 10
rate = 0.05

# 定义均方差为损失函数
loss = tf.reduce_mean(tf.square(y - yp))

# 定义梯度下降优化器,并传入参数学习率和损失函数
optimizer = tf.train.GradientDescentOptimizer(rate).minimize(loss)

ss = tf.Session()
init = tf.global_variables_initializer()
ss.run(init)

# 进行多轮迭代训练,每轮将样本值逐个输入模型,进行梯度下降优化操作得出参数,绘制模型曲线
for _ in range(train_epoch):
    for x1, y1 in zip(sx, sy):
        ss.run([optimizer, loss], feed_dict={x: x1, y: y1})
    tmp_k = k.eval(session=ss)
    tmp_b = b.eval(session=ss)
    plt.plot(sx, tmp_k * sx + tmp_b)

    print(tmp_k, tmp_b)

plt.show()

ss.close()

模型预测

用训练得到的k,b值导入y=kx+b中,根据预测特征值x得出标签y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸之间 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值