生活百科知识

经验知识首页 > 电脑 > 详细经验讲解内容页

[视频]用tensorflow拟合两组数据的函数关系

关于林肯mkx用tensorflow拟合两组数据的函数关系,期待您的经验分享,不知道说什么,送你一朵小红花吧 !
无情天魔精致 2018-05-21 10:10:58 12343人看过 分享经验到微博

更新:2024-01-26 11:06:11头条经验

来自豆丁网https://www.docin.com/的优秀用户无情天魔精致,于2018-05-21在生活百科知识平台总结分享了一篇关于“用tensorflow拟合两组数据的函数关系上海博物馆”的经验,非常感谢无情天魔精致的辛苦付出,他总结的解决技巧方法及常用办法如下:

本文,给出两组随机数据,并尝试着找出这两组数据之间的函数关系。本文只准备拟合出一个一次函数,虽然这样的结果,很可能并不能很好的拟合数据。

工具/原料

电脑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)

[图]2/3

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

[图]3/3

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

[图]

创建训练结构

1/6

本文的目标,是找到一个函数:

y = W*x_data+b

能够尽量拟合给定的数组数据。

[图]2/6

其中,一次项系数W称为权重,是一个介于-1到1之间的实数:

W = tf.Variable(tf.random_uniform([1],-1.0,1.0))

[图]3/6

常数项b的初始值是0:

b = tf.Variable(tf.zeros([1]))

[图]4/6

loss是y与y_data的误差:

loss = tf.reduce_mean(tf.square(y-y_data))

[图]5/6

用梯度下降法制作一个优化器(optimizer),通过训练,来减少误差:

optimizer = tf.train.GradientDescentOptimizer(0.5)

train = optimizer.minimize(loss)

[图]6/6

初始化所有的变量:

init = tf.initialize_all_variables()

这样,基本的训练结构就完成了。

[图]

开始训练

1/4

创建一个对话:

sess = tf.Session()

激活所有的初始化变量:

sess.run(init)

[图]2/4

开始长达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()

[图]3/4

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

[图]4/4

在关闭对话之前,还可以插入数据对应的图像,以及训练的函数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,只是误差尽可能小的一次函数。

[图][图]