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

简介: 2018年9月12日笔记0.检测tensorflow环境安装tensorflow命令:pip install tensorflow下面一段代码能够成功运行,则说明安装tensorflow环境成功。

2018年9月12日笔记

0.检测tensorflow环境

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

import tensorflow as tf
hello = tf.constant('hello world')
session = tf.Session()
session.run(hello)

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


img_27f887d11dc8bb872da1888d38e667fd.png
image.png

1.数据准备

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.搭建神经网络

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对象;


img_d7a81dc1107489398c90c6bdb23479ca.png
image.png

img_44f0aa38119cbcc495cff443f2ef3e1b.png
image.png

img_e4ae48b892bf99da4676c63a79f2eed5.png
image.png

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


img_ebd84d639bfebe4bbef135349f5b5de5.png
image.png

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

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

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


img_49b98416468b369b437707535f5053b6.png
image.png

3.变量初始化

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

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


img_eba6278c89eb8ef15ee4daee0eaab711.png
image.png

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

4.模型训练

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

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

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


img_71ef6eb5968dc313e38efc5c90a0639f.png
image.png

5.完整代码

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

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的流程。

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 PyTorch
用PyTorch轻松实现二分类:逻辑回归入门
用PyTorch轻松实现二分类:逻辑回归入门
用PyTorch轻松实现二分类:逻辑回归入门
|
2天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
|
9天前
|
机器学习/深度学习 自然语言处理 TensorFlow
Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性
Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性
21 0
|
14天前
|
数据可视化 Python
Python进行多输出(多因变量)回归:集成学习梯度提升决策树GRADIENT BOOSTING,GBR回归训练和预测可视化
Python进行多输出(多因变量)回归:集成学习梯度提升决策树GRADIENT BOOSTING,GBR回归训练和预测可视化
21 0
Python进行多输出(多因变量)回归:集成学习梯度提升决策树GRADIENT BOOSTING,GBR回归训练和预测可视化
|
16天前
|
机器学习/深度学习 人工智能 分布式计算
R和Python机器学习:广义线性回归glm,样条glm,梯度增强,随机森林和深度学习模型分析
R和Python机器学习:广义线性回归glm,样条glm,梯度增强,随机森林和深度学习模型分析
18 0
|
15天前
|
机器学习/深度学习 数据可视化 API
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
14 0
|
23天前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中的非线性回归
pytorch中的非线性回归
14 2
pytorch中的非线性回归
|
23天前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中的线性回归
pytorch中的线性回归
15 1
|
10月前
|
机器学习/深度学习 数据可视化 算法
机器学习系列6 使用Scikit-learn构建回归模型:简单线性回归、多项式回归与多元线性回归
在本文中,我们以美国南瓜数据为例,讲解了三种线性回归的原理与使用方法,探寻数据之间的相关性,并构建了6种线性回归模型。将准确率从一开始的0.04提升到0.96.
219 0
|
机器学习/深度学习 Python
Python中LSTM回归神经网络的时间序列预测
Python中LSTM回归神经网络的时间序列预测
477 2
Python中LSTM回归神经网络的时间序列预测