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环境,本文将介绍如何准备数据与预处理数据. 正文: 在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的. 一.数 ...
随机推荐
- python内建模块发起HTTP(S)请求
一.Python2 httplib 简介:httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. ...
- mysql数据库总结。
mysql MySQL语法MySQL采用结构化查询语言SQL (Structured Query Language)语言来操作数据库SQL语句必须以 ; 结束SQL语句分类DDL(数据定义语言): c ...
- Codeforces G. Nick and Array(贪心)
题目描述: Nick had received an awesome array of integers a=[a1,a2,…,an] as a gift for his 5 birthday fro ...
- windows下面,PHP如何启动一些扩展功能
我今天在试这个时,发现php有些默认设置,是需要人为介入修改的. 比如,当我们在安装一个软件,而这个软件需要启用php一些扩展功能. 那么,按一般套路,将php.ini文件里的相关行的注释去掉即可. ...
- 将mysql从MyISAM更改为INNODB
今天更新django中的表字段,由于mysql从5.1升级到5.7.以前的外键关联必须从MYISAM改新为INNODB才可以继续. 过程有点刺激,但还好,只要想清楚了过程,提前作好备份,就没啥大问题. ...
- synchronize——对象锁和类锁
最近在研究Java 多线程的只是,经常能看到synchronize关键字,以前只是一眼带过,没有细究,今天趁这个机会,整理下 synchronize作为多线程关键字,是一种同步锁,它可以修饰以下几种对 ...
- CentOS7.6使用Virt-manager创建虚拟机报错
Virt-manager创建虚拟机遇到的一个问题解决 环境:centos7.6 系统内核:3.10.0-957.el7.x86_64 virsh version 根据库编译:libvirt 4.5.0 ...
- 创建django项目完整实例
虚拟环境搭配 安装和配置 安装虚拟环境的命令: 1)sudo pip install virtualenv #安装虚拟环境 2)sudo pip install virtualenvwrapper # ...
- JS优化常用片断
防抖debounce装饰器 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. function debounce(func, delay) { let isCooldown = fa ...
- vue基本使用及脚手架使用
一.基本使用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...