TensorFlow-线程回归模型
实验目的:
方程:y = Wx + b
通过大量的(x, y)坐标值,模型可以计算出接近W和b的值
实验步骤:
第一步:生成线程回归方程模型所需要的数据
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt # 随机生成1000个点,围绕在y=0.1x+0.3的直线周围
num_points = 1000
vectors_set = []
for i in range(num_points):
x1 = np.random.normal(0.0, 0.50) # 正态分布 0.0:均值,0.50:标准差
y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03)
vectors_set.append([x1, y1]) # 生成一些样本数据
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
# print(x_data) 会有1000个数据
plt.scatter(x_data, y_data, c='r')
plt.show()

第二步:建立线性回归模型,将生成的数据(x_data,y_data)喂给模型,并产生结果。
# 生成1维的W矩阵, 取值是[-1,1]之间的随机数
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name='W')
# 生成1维的b矩阵,初始值是0
b = tf.Variable(tf.zeros([1]), name='b')
# 记过计算得出预估值y
y = W * x_data + b # 以预估值y和实际值y_data之间的均方误差作为损失
loss = tf.reduce_mean(tf.square(y - y_data, name='loss'))
# 采用梯度下降法来优化参数
optimizer = tf.train.GradientDescentOptimizer(0.5)
# 训练的过程就是最小化这个误差值
train = optimizer.minimize(loss, name='train') sess = tf.Session()
# 初始化sess
init = tf.global_variables_initializer()
sess.run(init) # 初始化的W和b是多少
print("W = ", sess.run(W), "b = ", sess.run(b), "loss = ", sess.run(loss))
# 执行20次训练
for step in range(20):
sess.run(train)
# 输出寻来你好的W和b
print("W = ", sess.run(W), "b = ", sess.run(b), "loss = ", sess.run(loss))
结果:
W = [0.6756458] b = [0.] loss = 0.16456214
W = [0.53388023] b = [0.2748111] loss = 0.050819542
W = [0.4182969] b = [0.28113642] loss = 0.027618099
W = [0.33377516] b = [0.28629357] loss = 0.015202045
W = [0.2719439] b = [0.2900648] loss = 0.0085575525
W = [0.22671175] b = [0.29282364] loss = 0.00500173
W = [0.19362253] b = [0.29484183] loss = 0.0030988192
W = [0.16941638] b = [0.2963182] loss = 0.0020804694
W = [0.15170857] b = [0.29739827] loss = 0.0015354961
W = [0.13875458] b = [0.29818836] loss = 0.0012438523
W = [0.12927818] b = [0.29876634] loss = 0.0010877779
W = [0.12234581] b = [0.29918915] loss = 0.0010042539
W = [0.11727448] b = [0.29949847] loss = 0.0009595558
W = [0.11356459] b = [0.29972476] loss = 0.0009356354
W = [0.11085065] b = [0.29989028] loss = 0.00092283427
W = [0.10886529] b = [0.30001137] loss = 0.0009159839
W = [0.10741292] b = [0.30009997] loss = 0.0009123176
W = [0.10635044] b = [0.30016476] loss = 0.00091035594
W = [0.1055732] b = [0.30021217] loss = 0.0009093059
W = [0.10500462] b = [0.30024683] loss = 0.00090874406
W = [0.10458867] b = [0.30027223] loss = 0.00090844336
我们可以看到W不断趋近于0.1,b不断趋近于0.3,loss不断变小。
说明模型是可用的。
TensorFlow-线程回归模型的更多相关文章
- 吴裕雄 python 神经网络——TensorFlow实现回归模型训练预测MNIST手写数据集
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_dat ...
- 利用Tensorflow实现逻辑回归模型
官方mnist代码: #下载Mnist数据集 import tensorflow.examples.tutorials.mnist.input_data mnist = input_data.read ...
- 手写数字识别 ----Softmax回归模型官方案例注释(基于Tensorflow,Python)
# 手写数字识别 ----Softmax回归模型 # regression import os import tensorflow as tf from tensorflow.examples.tut ...
- tensorflow之逻辑回归模型实现
前面一篇介绍了用tensorflow实现线性回归模型预测sklearn内置的波士顿房价,现在这一篇就记一下用逻辑回归分类sklearn提供的乳腺癌数据集,该数据集有569个样本,每个样本有30维,为二 ...
- JavaScript 学习笔记之线程异步模型
核心的javascript程序语言并没有包含任何的线程机制,客户端javascript程序也没有任何关于线程的定义,事件驱动模式下的javascript语言并不能实现同时执行,即不能同时执行两个及以上 ...
- 深度学习实践系列(1)- 从零搭建notMNIST逻辑回归模型
MNIST 被喻为深度学习中的Hello World示例,由Yann LeCun等大神组织收集的一个手写数字的数据集,有60000个训练集和10000个验证集,是个非常适合初学者入门的训练集.这个网站 ...
- 10分钟搞懂Tensorflow 逻辑回归实现手写识别
1. Tensorflow 逻辑回归实现手写识别 1.1. 逻辑回归原理 1.1.1. 逻辑回归 1.1.2. 损失函数 1.2. 实例:手写识别系统 1.1. 逻辑回归原理 1.1.1. 逻辑回归 ...
- 学习TensorFlow,线性回归模型
学习TensorFlow,在MNIST数据集上建立softmax回归模型并测试 一.代码 <span style="font-size:18px;">from tens ...
- 使用Tensorflow搭建回归预测模型之二:数据准备与预处理
前言: 在前一篇中,已经搭建好了Tensorflow环境,本文将介绍如何准备数据与预处理数据. 正文: 在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的. 一.数 ...
随机推荐
- MySQL/MariaDB数据库的服务器配置
MySQL/MariaDB数据库的服务器配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL中的系统数据库 1>.mysql数据库 是mysql的核心数据库,类 ...
- ExecutorService java多线程分割list运行
调用方法 int threadNum = 7; while(true) { List<FaceAnalyseImage> list = faceAnalyseImageMapper.sel ...
- 猿族崛起-Alpha版本发布2
标准开头 Q A 这个作业属于哪个课程 课程链接 这个作业要求在哪里 要求 团队名称 猿族崛起 这个作业的目标 完成alpha版本未完成的功能,并进行拓展 Sname Sno 向宏力 20173106 ...
- 初学Django基础02 ORM操作
django的ORM操作 之前我们知道了models.py这个文件,这个文件是用来读取数据结构的文件,每次操作数据时都走这个模块 常用字段 AutoField int自增列,必须填入参数 primar ...
- EntityFramework6 学习笔记(三)
你可能要问,我用EF不就为了避免写SQL吗?如果要写SQL我不如直接用ADO.NET得了.话虽然这么说没错,可有些时候使用EF操作数据还是有一些不方便,例如让你根据条件删除一组记录,如果按照正常的流程 ...
- Vue之路由
1. SPA是什么 单页Web应用(single page application,SPA),就是只有一个Web页面的应用, 是加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用 ...
- Dump文件数据存储格式(一)
我们已经了解了什么是Dump文件,它保存了什么数据,有什么作用,但它是如何存储的,数据格式是怎样的呢.下面简单说一下. 一.总体结构 二.文件头 首先文件的最开始的32个字节是Dump文件的文件头,这 ...
- AD域服务器组策略实现文件夹重定向 保护文件安全
网络管理员或许都遇到过类似的烦恼.如系统崩溃后,原来存放在 C盘的应用程序专署数据都丢失了;或者桌面上的文件莫名其妙少了,等等.有时候,我们也千方百计提醒员工不要把文件存放在桌面上,但是他们总是不听 ...
- 73: luogu 2014 树形dp
$des$ 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有 ...
- 设置多个className
有时候我们需要有选择地设置多个className function myComponent(props) { const myClassName = { 'aaa', {'bbb': props.ne ...