用tensorflow拟合两组数据的函数关系
来源:网络收集 点击: 时间:2024-03-09给出两组随机数:
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的秤伐数字一一扯盆联对应。

本文的目标,是找到一个函数:
y = W*x_data+b
能够尽量拟合给定的数组数据。

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

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

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()
这样,基本的训练结构就完成了。

创建一个对话:
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,只是误差尽可能小的一次函数。


大家思考一下,用什么函数,可以完美的拟合这个随机数据?
如果x_data=,y_data=,这两组数据是可以用一次函数拟合的,你可以自己试一下。
TENSORFLOW数据拟合机器学习版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_294785.html