实验目的:

方程: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-线程回归模型的更多相关文章

  1. 吴裕雄 python 神经网络——TensorFlow实现回归模型训练预测MNIST手写数据集

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_dat ...

  2. 利用Tensorflow实现逻辑回归模型

    官方mnist代码: #下载Mnist数据集 import tensorflow.examples.tutorials.mnist.input_data mnist = input_data.read ...

  3. 手写数字识别 ----Softmax回归模型官方案例注释(基于Tensorflow,Python)

    # 手写数字识别 ----Softmax回归模型 # regression import os import tensorflow as tf from tensorflow.examples.tut ...

  4. tensorflow之逻辑回归模型实现

    前面一篇介绍了用tensorflow实现线性回归模型预测sklearn内置的波士顿房价,现在这一篇就记一下用逻辑回归分类sklearn提供的乳腺癌数据集,该数据集有569个样本,每个样本有30维,为二 ...

  5. JavaScript 学习笔记之线程异步模型

    核心的javascript程序语言并没有包含任何的线程机制,客户端javascript程序也没有任何关于线程的定义,事件驱动模式下的javascript语言并不能实现同时执行,即不能同时执行两个及以上 ...

  6. 深度学习实践系列(1)- 从零搭建notMNIST逻辑回归模型

    MNIST 被喻为深度学习中的Hello World示例,由Yann LeCun等大神组织收集的一个手写数字的数据集,有60000个训练集和10000个验证集,是个非常适合初学者入门的训练集.这个网站 ...

  7. 10分钟搞懂Tensorflow 逻辑回归实现手写识别

    1. Tensorflow 逻辑回归实现手写识别 1.1. 逻辑回归原理 1.1.1. 逻辑回归 1.1.2. 损失函数 1.2. 实例:手写识别系统 1.1. 逻辑回归原理 1.1.1. 逻辑回归 ...

  8. 学习TensorFlow,线性回归模型

    学习TensorFlow,在MNIST数据集上建立softmax回归模型并测试 一.代码 <span style="font-size:18px;">from tens ...

  9. 使用Tensorflow搭建回归预测模型之二:数据准备与预处理

    前言: 在前一篇中,已经搭建好了Tensorflow环境,本文将介绍如何准备数据与预处理数据. 正文: 在机器学习中,数据是非常关键的一个环节,在模型训练前对数据进行准备也预处理是非常必要的. 一.数 ...

随机推荐

  1. Python入门篇-functools

    Python入门篇-functools 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.reduce方法 reduce方法,顾名思义就是减少 reduce(function,se ...

  2. Local CubeMap实现玻璃折射

    这个方法来自于Arm公司Cave Demo中的冰雕效果 原文提供了一种计算折射向量的方法, 这里用个更简单的方式尝试发现效果也不错: float3 v = -normalize(_WorldSpace ...

  3. PHP——数组根据某一键值合并

    前言 其实要实现很简单直接foreach,再根据PHP中数组的特性就可以轻松实现. 步骤 这是源数据的格式 $info = [ [ "gname" => "特别关心 ...

  4. [ML] Tensorflow.js + Image segmentPerson

    <!DOCTYPE html> <html> <head> <title>Parcel Sandbox</title> <meta c ...

  5. [Javascript] Window.matchMedia()

    window.matchMedia() allow to listen to browser window size changes and trigger the callback for diff ...

  6. 持续集成学习1 gitlab和jenkins安装

    一.gitlab安装参照链接 https://www.cnblogs.com/linuxk/p/10100431.html 二.安装jenkins 1.获取jenkins源码包 https://blo ...

  7. S1_搭建分布式OpenStack集群_06 nova服务配置 (控制节点)

    一.创建数据库(控制节点)创建数据库以及用户:# mysql -uroot -p12345678MariaDB [(none)]> CREATE DATABASE nova_api;MariaD ...

  8. 初版javascript的思维导图

  9. 从.NET/CLR返回的hresult:0x8013XXXX的解释

    什么是0x8013XXXX 有时您可能会遇到从.NET返回的神秘HRESULT,它以0x8013开头,例如0x80131522.不幸的是,Visual Studio附带的错误查找并不能真正处理那些奇怪 ...

  10. 关于dword ptr 指令

    dword 双字 就是四个字节ptr pointer缩写 即指针[]里的数据是一个地址值,这个地址指向一个双字型数据比如mov eax, dword ptr [12345678] 把内存地址12345 ...