前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于tensorflow的一元一次方程回归预测

基于tensorflow的一元一次方程回归预测

作者头像
潇洒坤
发布2018-10-09 11:40:53
4490
发布2018-10-09 11:40:53
举报
文章被收录于专栏:简书专栏

0.检测tensorflow环境

安装tensorflow命令:pip install tensorflow 下面一段代码能够成功运行,则说明安装tensorflow环境成功。

代码语言:javascript
复制
import tensorflow as tf
hello = tf.constant('hello world')
session = tf.Session()
session.run(hello)

上面一段代码成功运行的结果如下图所示:

image.png

1.数据准备

代码语言:javascript
复制
import numpy as np

w = 0.1
b = 0.3
X = np.random.rand(100).astype('float32')
y = X * w + b

第1行代码导入numpy库,起别名np; 第5行代码调用np.random.rand方法随机产生100个值处于(0,1)之间的数。 np.random.rand官方文档链接:https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.rand.html 第6行代码使用了ndarray对象的广播特性,将X中的每一个值乘以w,再加上b的结果赋值给变量y。

2.搭建神经网络

代码语言:javascript
复制
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.Variable(tf.zeros([1]))
predict_y = Weights * X + biases
loss = tf.reduce_mean(tf.square(predict_y - y))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

第1、2行代码调用tf.Variable方法实例化tensorflow中的变量对象,tf.Variable方法中的参数为tensorflow中的Tensor对象;

image.png

image.png

image.png

第3行代码将变量与特征矩阵的计算结果赋值给变量predict_y,数据类型如下图所示:

image.png

第4行代码定义损失函数,等同于回归预测中的MSE,中文叫做均方误差,数据类型如下图所示:

image.png

第5行代码调用tf.train库中的GradientDescentOptimizer方法实例化优化器对象,数据类型如下图所示:

image.png

第6行代码调用优化器的minimize方法定义训练方式,参数为损失函数。方法的返回结果赋值给变量train,数据类型如下图所示:

image.png

3.变量初始化

代码语言:javascript
复制
init = tf.global_variables_initializer()
session = tf.Session()
session.run(init)

对于神经网络模型,重要是其中的W、b这两个参数。 开始神经网络模型训练之前,这两个变量需要初始化。 第1行代码调用tf.global_variables_initializer实例化tensorflow中的Operation对象。

image.png

第2行代码调用tf.Session方法实例化会话对象; 第3行代码调用tf.Session对象的run方法做变量初始化。

4.模型训练

模型训练200次,每运行1次代码session.run(train)则模型训练1次。 在训练次数为20的整数倍时,打印训练步数、训练后更新的Weights和biases值。

代码语言:javascript
复制
for step in range(201):
    session.run(train)
    if step % 20 == 0:
        print(step, session.run(Weights), session.run(biases))

上面一段代码的运行结果如下:

image.png

5.完整代码

下面代码与前文相比,改变了w和b的值。

代码语言:javascript
复制
import tensorflow as tf
import numpy as np

w = 2
b = 0.5
X = np.random.rand(100).astype('float32')
y = X * w + b

Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.Variable(tf.zeros([1]))
predict_y = Weights * X + biases
loss = tf.reduce_mean(tf.square(predict_y - y))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

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

for step in range(201):
    session.run(train)
    if step % 20 == 0:
        print(step, session.run(Weights), session.run(biases))

上面一段代码的运行结果如下:

0 [1.2842455] [1.2999418] 20 [1.7820456] [0.6222662] 40 [1.9463692] [0.5300854] 60 [1.9868033] [0.50740296] 80 [1.9967527] [0.5018216] 100 [1.9992009] [0.5004483] 120 [1.9998035] [0.5001102] 140 [1.9999516] [0.5000271] 160 [1.9999882] [0.5000066] 180 [1.999997] [0.50000167] 200 [1.9999994] [0.50000036]

6.总结

1.这是本文作者写的第1篇关于tensorflow的文章,加深了对tensorflow框架的理解; 2.一元一次方程回归预测是简单的回归问题,主要用于熟悉tensorflow的流程。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.09.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.检测tensorflow环境
  • 1.数据准备
  • 2.搭建神经网络
  • 3.变量初始化
  • 4.模型训练
  • 5.完整代码
  • 6.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档