使用TensorFlow v2库实现线性回归
使用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库实现线性回归的更多相关文章
- 怎样用Python的Scikit-Learn库实现线性回归?
来源商业新知号网,原标题:用Python的Scikit-Learn库实现线性回归 回归和分类是两种 监督 机器 学习算法, 前者预测连续值输出,而后者预测离散输出. 例如,用美元预测房屋的价格是回归问 ...
- 02-05 scikit-learn库之线性回归
目录 scikit-learn库之线性回归 一.LinearRegression 1.1 使用场景 1.2 代码 1.3 参数详解 1.4 属性 1.5 方法 1.5.1 报告决定系数 二.ARDRe ...
- 使用TensorFlow v2.0构建多层感知器
使用TensorFlow v2.0构建一个两层隐藏层完全连接的神经网络(多层感知器). 这个例子使用低级方法来更好地理解构建神经网络和训练过程背后的所有机制. 神经网络概述 MNIST 数据集概述 此 ...
- 使用TensorFlow v2.0构建卷积神经网络
使用TensorFlow v2.0构建卷积神经网络. 这个例子使用低级方法来更好地理解构建卷积神经网络和训练过程背后的所有机制. CNN 概述 MNIST 数据集概述 此示例使用手写数字的MNIST数 ...
- TensorFlow v2.0实现Word2Vec算法
使用TensorFlow v2.0实现Word2Vec算法计算单词的向量表示,这个例子是使用一小部分维基百科文章来训练的. 更多信息请查看论文: Mikolov, Tomas et al. " ...
- TensorFlow v2.0实现逻辑斯谛回归
使用TensorFlow v2.0实现逻辑斯谛回归 此示例使用简单方法来更好地理解训练过程背后的所有机制 MNIST数据集概览 此示例使用MNIST手写数字.该数据集包含60,000个用于训练的样本和 ...
- TensorFlow v2.0的基本张量操作
使用TensorFlow v2.0的基本张量操作 from __future__ import print_function import tensorflow as tf # 定义张量常量 a = ...
- 使用TensorFlow v2张量的一个简单的“hello world”示例
使用TensorFlow v2张量的一个简单的"hello world"示例 import tensorflow as tf # 创建一个张量 hello = tf.constan ...
- (第一章第六部分)TensorFlow框架之实现线性回归小案例
系列博客链接: (一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html (二)TensorFlow框架之图与Tensor ...
随机推荐
- C++走向远洋——42(项目二,我的数组类,深复制,构造函数)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- hadoop地址配置、内存配置、守护进程设置、环境设置
1.1 hadoop配置 hadoop配置文件在安装包的etc/hadoop目录下,但是为了方便升级,配置不被覆盖一般放在其他地方,并用环境变量HADOOP_CONF_DIR指定目录. 1.1.1 ...
- 【Java】Map总结和源码注释
前言 Map为一个Java中一个重要的数据结构,主要表示<key, value>的映射关系对.本文包括了相关Map数据结构的总结和源码的阅读注释. HashMap 初始化,可以选择第二个初 ...
- cocoapods iOS类库管理工具的安装与使用
CocoaPods是一个管理Swift和Objective-C的Cocoa项目的依赖工具.他可以优雅地帮助你扩展你的项目.简单的说,就是替你管理Swift和Objective-C的Cocoa项目的第三 ...
- Docker深入浅出系列 | Docker Compose多容器实战
目录 前期准备 Docker Compose是什么 为什么要用Docker Compose Docker Compose使用场景 Docker Compose安装 Compose Yaml文件结构 C ...
- MUI使用H5+Api调取系统相册多图选择及转base64码
伟大的哲学家曾说过"写代码,一定要翻文档" 这次我们需要用到的是调取系统相册进行多图上传,先奉上html5+api关于系统相册的文档链接链接:HTML5+ API Referenc ...
- a标签嵌套href默认行为与子元素click事件存在影响
2018-08-07 Question about work 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当<a>标签内部存在嵌套时, 父元素&l ...
- javascript的“好莱坞原则”
好莱坞原则——不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you).在Javascript中就是:别调用我们,我们会调用你. “好莱坞原则”强调的是高层对低 ...
- Alibaba Sentinel 限流与熔断初探(技巧篇)
目录 1.Sentinel 是什么 ?主要能解决什么问题? 2.限流与熔断的使用场景 3.Sentinel 源码结构 4.在 IntelliJ IDEA 中运行 Sentine Demo 温馨提示:源 ...
- Python卸载
前言 自己瞎折腾下载Python3.8.2,把之前下载好的python3.7.3覆盖掉.在运行之前Python环境的程序多次未果后.找到原因,Python3.7.3的包不支持Python3.8.2.于 ...