基于tensorflow最简单的模型训练⽰例python
序⾔
结合tensorflow拟合函数y=kx+b模型训练最简单实例,⼀起⼊门机器学习
准备数据
⾸先随机⽣成散点图数据
# import tensorflow as tf
# 上⾯导包不到placeholder模块时,换下⾯导⼊⽅式
import tensorflowpat.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为数据抖动幅度
tensorflow入门教程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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论