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环境,本文将介绍如何准备数据与预处理数据. 正文: 在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的. 一.数 ...
 
随机推荐
- video基础介绍&封装react-video基础组件,ES6
			
好几个月没有写博客了,人都赖了,今天抽了一点时间把最近项目react中video整理了一下(感觉这个以后用的活比较多) 1.前三部部分详细归纳了video的基础知识,属性和功能: 2.第四部分是封装了 ...
 - Eureka 中服务下线的几种方式
			
原文:https://blog.csdn.net/qq_15071263/article/details/85276486#1_6 Eureka 中服务下线的几种方式1.直接停掉服务根据默认的策略,如 ...
 - IP trie树接口
			
自己实现了一个IP trie树接口. 在这里保存一下,方便备份以后使用,同时欢迎纠错和交流,希望有大神能指教更高效的算法. 1.头文件如下(iptrie.h) #ifndef _IP_TRIE_H_ ...
 - vim中自动补全插件snipmate使用
			
vim中自动补全插件snipmate使用 1.下载snipMatezip:https://github.com/msanders/snipmate.vim/archive/master.zip 2.解 ...
 - axure快速上手
			
Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写.Axure RP是美国Axur ...
 - Json在序列化getter导致的问题
			
Java中的Json序列化,不容忽视的getter 问题重现 public class AjaxJson { private boolean success; private String msg; ...
 - Java 内部类和Lambda
			
Java内部类 内部类又称为嵌套类,是在类中定义另外一个类.内部类可以处于方法内/外,内部类的成员变量/方法名可以和外部类的相同.内部类编译后会成为完全不同的两个类,分别为outer.class和ou ...
 - 51nod1463 找朋友
			
[传送门] 写的时候一直没有想到离线解法,反而想到两个比较有趣的解法.一是分块,$f[i][j]$表示第$i$块块首元素到第$j$个元素之间满足条件的最大值(即对$B_l + B_r \in K$的$ ...
 - 用OKR提升员工的执行力
			
很多管理者在公司管控的过程中常常出现一种乏力的感觉,觉得很多事情推进不下去,结果总是令人不满意.管理者总是会吐槽,“员工执行力差!”而此时大部分管理者会认为公司执行力差是员工能力和态度的问题. 事实上 ...
 - Fast + Small Docker Image Builds for Rust Apps
			
转自:https://shaneutt.com/blog/rust-fast-small-docker-image-builds/ In this post I’m going to demonstr ...