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环境,本文将介绍如何准备数据与预处理数据. 正文: 在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的. 一.数 ...
随机推荐
- mongodb 常见问题处理方法收集
问题1:非正常关闭服务或关机后 mongod服务无法正常启动 在使用中发现mongodb 的服务可能因为非正常关闭而启动不了,这时我们通过 删除data目录下的 *.lock文件,再运行下/mongo ...
- 一道面试题关于js中逗号
一.今天遇到一个面试题,自我感觉是会,但是却做错了.人都是这样,自我感觉良好,其实也就预警自己已经忽视一些细节以及一些自我感知. 面试题: ,j=,k; ,j<;i++,j++){ k=i+j; ...
- Python语言程序设计(3)--字符串类型及操作--time库进度条
1.字符串类型的表示: 三引号可做注释,注释其实也是字符串 2.字符串的操作符 3.字符串处理函数 输出:
- 第六周测试补交 多线程代码和sumN
1.多线程代码 要求:编译运行多线程程序,提交编译和运行命令截图 2.sumN 要求:1-N求和的截图
- UVALive - 4097:Yungom(逼近 贪心)(DP)
pro:有D个字母,每个字母有自己的权值,现状需要用它们拼出N个单词,使得这些单词互相不为另外一个的前缀. 且单词的权值和最小.D<=200; N<=200; sol:如果建立字典树,那个 ...
- 查看mysql执行时间
mysql的 profiling不是默认打开的 查看profiling是否找开 mysql> show variables like "%pro%"; +---------- ...
- JAVA项目部署(1)
之前小菜觉得项目发布啊部署可难了,今个儿小菜接有幸触了一下java项目的打包和部署,没上手前觉得可高大上了,可难了,小菜这人就是做没做过的事前特别喜欢自己吓唬自己,这个习惯不好,得改!其实自己真正动手 ...
- go 学习 (五):goroutine 协程
一.goroutine 基础 定义 使用者分配足够多的任务,系统能自动帮助使用者把任务分配到 CPU 上,让这些任务尽量并发运作,此机制在Go中称作 goroutine goroutine 是 Go语 ...
- [Javascript] Window.matchMedia()
window.matchMedia() allow to listen to browser window size changes and trigger the callback for diff ...
- SPI总线协议理解
1.什么是SPI: 是摩托罗拉公司设计的一种全双工通信.高速的.同步的串行外部设备通信协议. 2.SPI作用: 用于设备之间的数据交互. 3.SPI由什么构成: 1)MOSI:主设备输出从设备输入线, ...