[视频]用tensorflow拟合两组数据的函数关系
更新:2024-01-26 11:06:11头条经验
本文,给出两组随机数据,并尝试着找出这两组数据之间的函数关系。本文只准备拟合出一个一次函数,虽然这样的结果,很可能并不能很好的拟合数据。
工具/原料
电脑python3.6(Anaconda)tensorflow模块numpy模块准备数据
1/3分步阅读给出两组随机数:
import tensorflow as tf
import numpy as np
x_data = np.random.rand(300).astype(np.float32)
y_data = np.random.rand(300).astype(np.float32)

打印一下x_data,这是由300个随机实数组成的数组。

打印一下y_data,也是300个随机实数,与x_data的数字一一对应。

创建训练结构
1/6本文的目标,是找到一个函数:
y = W*x_data+b
能够尽量拟合给定的数组数据。

其中,一次项系数W称为权重,是一个介于-1到1之间的实数:
W = tf.Variable(tf.random_uniform([1],-1.0,1.0))

常数项b的初始值是0:
b = tf.Variable(tf.zeros([1]))

loss是y与y_data的误差:
loss = tf.reduce_mean(tf.square(y-y_data))

用梯度下降法制作一个优化器(optimizer),通过训练,来减少误差:
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

初始化所有的变量:
init = tf.initialize_all_variables()
这样,基本的训练结构就完成了。

开始训练
1/4创建一个对话:
sess = tf.Session()
激活所有的初始化变量:
sess.run(init)

开始长达10000次的训练:
for step in range(10001):
sess.run(train)
#每隔100次,就输出一下对应的W和b:
if step%100==0:
print(str(step).rjust(5),sess.run(W),sess.run(b))
训练结束后,关闭对话:
sess.close()

运行一下,看看具体的训练过程。

在关闭对话之前,还可以插入数据对应的图像,以及训练的函数y对应的图像:
import matplotlib.pyplot as pt
pt.axis('on')
pt.scatter(x_data,y_data,c='g')
pt.scatter(x_data,sess.run(W*x_data+b),
c='r')
pt.show()
图中,绿色点是给出的随机数据的图像,红色线是拟合的函数图像;
由于数据点过于分散,因此,一次函数并不能很好的拟合这组数据;
这里拟合出的y,只是误差尽可能小的一次函数。


母婴/教育经验推荐
- Q[视频]哪里win10怎么设置屏保
- Q有没有怀孕半个月的症状
- Q头条新生儿打嗝怎么办?
- Q那些怎样练好钢笔字?
- Q有什么怎样选择优质的外教培训
- Q有认识图解胎儿成长过程
- Q什么样的读书笔记怎么写
- Q怎么中位数怎么求
- Q重磅钢琴五线谱入门
- Q怎样怎么写策划书
- Q怎么走定义法等计算函数y=ln(12x^2+2x+5)的导...
- Q怎么写论文开题报告的书写内容以及格式
- Q最近用乐高拼一个简单房子步骤
- Q都说怎么查看计算机等级考试报名是否成功
- Q说明毕业论文任务书怎么写(模板)
- Q求大家怎么提高学习效率
- Q好不好怎样用修改符号修改病句
- Q应该干货,一起学习多种方法计算y=9x.2+1.9...
- Q精选如何快速背诵课文
- Q[视频]宝可梦朱紫金属膜怎么获得
- Q[视频]如何选择苹果手机提醒怎么设置
- Q怎样更改华为手机的桌面壁纸?
- Q[视频]该不该抖音字体突然变大了
已有 73270 位经验达人注册
已帮助 144040 人解决了问题