使用TensorFlow v2库实现线性回归

此示例使用简单方法来更好地理解训练过程背后的所有机制

from __future__ import absolute_import, division, print_function
import tensorflow as tf
import numpy as np
rng = np.random
# 参数
learning_rate = 0.01
training_steps = 1000
display_step = 50
# 训练数据
X = np.array([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
7.042,10.791,5.313,7.997,5.654,9.27,3.1])
Y = np.array([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = X.shape[0]
# 随机初始化权重,偏置
W = tf.Variable(rng.randn(),name="weight")
b = tf.Variable(rng.randn(),name="bias") # 线性回归(Wx b)
def linear_regression(x):
return W * x b # 均方差
def mean_square(y_pred,y_true):
return tf.reduce_sum(tf.pow(y_pred-y_true,2)) / (2 * n_samples) # 随机梯度下降优化器
optimizer = tf.optimizers.SGD(learning_rate)
# 优化过程
def run_optimization():
# 将计算封装在GradientTape中以实现自动微分
with tf.GradientTape() as g:
pred = linear_regression(X)
loss = mean_square(pred,Y) # 计算梯度
gradients = g.gradient(loss,[W,b]) # 按gradients更新 W 和 b
optimizer.apply_gradients(zip(gradients,[W,b]))
# 针对给定训练步骤数开始训练
for step in range(1,training_steps 1):
# 运行优化以更新W和b值
run_optimization() if step % display_step == 0:
pred = linear_regression(X)
loss = mean_square(pred, Y)
print("step: %i, loss: %f, W: %f, b: %f" % (step, loss, W.numpy(), b.numpy()))

output:

step: 50, loss: 0.210631, W: 0.458940, b: -0.670898
step: 100, loss: 0.195340, W: 0.446725, b: -0.584301
step: 150, loss: 0.181797, W: 0.435230, b: -0.502807
step: 200, loss: 0.169803, W: 0.424413, b: -0.426115
step: 250, loss: 0.159181, W: 0.414232, b: -0.353942
step: 300, loss: 0.149774, W: 0.404652, b: -0.286021
step: 350, loss: 0.141443, W: 0.395636, b: -0.222102
step: 400, loss: 0.134064, W: 0.387151, b: -0.161949
step: 450, loss: 0.127530, W: 0.379167, b: -0.105341
step: 500, loss: 0.121742, W: 0.371652, b: -0.052068
step: 550, loss: 0.116617, W: 0.364581, b: -0.001933
step: 600, loss: 0.112078, W: 0.357926, b: 0.045247
step: 650, loss: 0.108058, W: 0.351663, b: 0.089647
step: 700, loss: 0.104498, W: 0.345769, b: 0.131431
step: 750, loss: 0.101345, W: 0.340223, b: 0.170753
step: 800, loss: 0.098552, W: 0.335003, b: 0.207759
step: 850, loss: 0.096079, W: 0.330091, b: 0.242583
step: 900, loss: 0.093889, W: 0.325468, b: 0.275356
step: 950, loss: 0.091949, W: 0.321118, b: 0.306198
step: 1000, loss: 0.090231, W: 0.317024, b: 0.335223
import matplotlib.pyplot as plt

# 绘制图
plt.plot(X, Y, 'ro', label='Original data')
plt.plot(X, np.array(W * X b), label='Fitted line')
plt.legend()
plt.show()

output:

欢迎关注磐创博客资源汇总站:

http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:

http://pytorch.panchuang.net/

使用TensorFlow v2库实现线性回归的更多相关文章

  1. 怎样用Python的Scikit-Learn库实现线性回归?

    来源商业新知号网,原标题:用Python的Scikit-Learn库实现线性回归 回归和分类是两种 监督 机器 学习算法, 前者预测连续值输出,而后者预测离散输出. 例如,用美元预测房屋的价格是回归问 ...

  2. 02-05 scikit-learn库之线性回归

    目录 scikit-learn库之线性回归 一.LinearRegression 1.1 使用场景 1.2 代码 1.3 参数详解 1.4 属性 1.5 方法 1.5.1 报告决定系数 二.ARDRe ...

  3. 使用TensorFlow v2.0构建多层感知器

    使用TensorFlow v2.0构建一个两层隐藏层完全连接的神经网络(多层感知器). 这个例子使用低级方法来更好地理解构建神经网络和训练过程背后的所有机制. 神经网络概述 MNIST 数据集概述 此 ...

  4. 使用TensorFlow v2.0构建卷积神经网络

    使用TensorFlow v2.0构建卷积神经网络. 这个例子使用低级方法来更好地理解构建卷积神经网络和训练过程背后的所有机制. CNN 概述 MNIST 数据集概述 此示例使用手写数字的MNIST数 ...

  5. TensorFlow v2.0实现Word2Vec算法

    使用TensorFlow v2.0实现Word2Vec算法计算单词的向量表示,这个例子是使用一小部分维基百科文章来训练的. 更多信息请查看论文: Mikolov, Tomas et al. " ...

  6. TensorFlow v2.0实现逻辑斯谛回归

    使用TensorFlow v2.0实现逻辑斯谛回归 此示例使用简单方法来更好地理解训练过程背后的所有机制 MNIST数据集概览 此示例使用MNIST手写数字.该数据集包含60,000个用于训练的样本和 ...

  7. TensorFlow v2.0的基本张量操作

    使用TensorFlow v2.0的基本张量操作 from __future__ import print_function import tensorflow as tf # 定义张量常量 a = ...

  8. 使用TensorFlow v2张量的一个简单的“hello world”示例

    使用TensorFlow v2张量的一个简单的"hello world"示例 import tensorflow as tf # 创建一个张量 hello = tf.constan ...

  9. (第一章第六部分)TensorFlow框架之实现线性回归小案例

    系列博客链接: (一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html (二)TensorFlow框架之图与Tensor ...

随机推荐

  1. Jprofile解析dump文件使用详解

    1 Jprofile简介 官网 下载对应的系统版本即可 性能查看工具JProfiler,可用于查看java执行效率,查看线程状态,查看内存占用与内存对象,还可以分析dump日志. 2 功能简介 选择a ...

  2. PyMuPDF库(处理PDF)

    昨天在公司需要把一份PDF格式认证表转换为图片JPEG格式,所以在网上查询了一些与此相关的python库,最后看网上大多都是使用Wand和PyMuPDF,在安装了Wand库后,导入相应的模块后报错了, ...

  3. python3.5以及scrapy,selenium,等 安装

    一.python3.5安装和配置 在安装的时候无意间发现了,python3.6没有给我自定义安装的机会,直接就C盘见:因此我选择了python3.5.<安装部分跳过,至于一条吃过痛苦的建议:不要 ...

  4. web前端性能优化一

    作为一个前端会允许自己的作品,在非硬性条件下出现卡顿? 肯定是不会,所以给大家梳理一下前端性能的优化. 一:文件操作 html文件压缩: 删除无用的空格和换行符等其他无意义字符 css文件压缩: 删除 ...

  5. 负载均衡框架 ribbon 三

    Ribbon 在 SpringCloud 中的使用 1.构建 Eureka 注册中心 smart-platform-eureka1 (1)导入jar包 <properties> <p ...

  6. JavaScript对象(一)

    Part One:对象的创建对象的创建,可以使用new Object() 或者 Object.creat(),该方法为静态函数 var foo = Object.create({x:1,y:2});  ...

  7. 使用java程序jxl操作Excel表格

    在实际开发中企业办公系统都会涉及到一个打印报表的功能,也许你的需求就是把web前端展示的员工信息以Excel表格形式打印出来 ,那么具体怎么操作下面我来实现一下 首先我们使用的是 java的jxl技术 ...

  8. 使用jquery实现动态时钟

    先导入jquery-1.7.2.min.js或其他版本文件 js部分 <script> $(function () { showTime(); //文档加载后.就开始显示时间 var se ...

  9. racket学习-call/cc (let/cc)

    Drracket continuation 文中使用let/cc代替call/cc Racket文档中,let/cc说明为: (let/cc k body ...+) Equivalent to (c ...

  10. 【05】openlayers 网格图层

    效果: 创建地图: //创建地图 var map = new ol.Map({ //设置显示地图的视图 view: new ol.View({ projection: 'EPSG:4326', //投 ...