废话不多说,直接开始

1.首先,导入所需的模块:

import numpy as np
import os
import tensorflow as tf

关闭tensorflow输出的一大堆硬件信息

os.environ['

2.写一个函数generate_data(),用来生成我们所需要的数据,这里使用的线性函数是y = 0.1*x + 0.3,具体解释见注释

def generate_data():#随机生成测试数据
    num_points = 1000
    vector_set = []
    for i in range(num_points):
        x1 = np.random.normal(0.0, 0.55)
        y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03)#以函数y = 0.1x+0.3为基准生成点数据,加上一个随机值是为了防止生成的点都严格在一条直线上
        vector_set.append([x1, y1])
        x_data = [v[0] for v in vector_set]#就是vector_set里面的所有x1组成的列表
        y_data = [v[1] for v in vector_set]#同上
    return x_data, y_data

说一下上面8,9两行的操作,其实

x_data = [v[0] for v in vector_set]

与

for i in vector_set:
    x_data.append(i[0])

等价,只是这样写比较方便。

3.接下来就是我们的计算图的构建了

首先介绍一些东西:

tf.random_uniform(shape, a, b)#用来生成a~b范围内的均匀分布的随机数,其中shape是生成的张量的形状
tf.square(a)#计算a的平方
tf.reduce_mean()#(不指定axis的情况下)就是计算平均值
tf.train.GradientDescentOptimizer(0.5)#tf.train里面有许多优化方法,这里使用GradientDescentOptimizer()参数是学习率,范围0~1

博主也只是略知一二,具体可以去查手册或百度

代码如下,也是有注释的(注意,下面的*,+,-都是张量运算)

def train(x_data, y_data):
    w = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name = 'w')#生成均匀分布的值,其中[1]可以换成(1, ),表示矩阵的形状
    b = tf.Variable(tf.zeros([1]), name = 'b')#b初始化为0
    y = w * x_data + b#根据随机生成的w, x_data, b计算y
    loss = tf.reduce_mean(tf.square(y - y_data), name = 'loss')#tf.square()平方,tf.reduce_mean(不指定axis的情况下)就是计算平均值,所以loss就是标准差
    optimizer = tf.train.GradientDescentOptimizer(0.5)#设置学习率为0.5
    train = optimizer.minimize(loss, name = 'train')#使用优化器通过损失函数调整神经网络权值

    with tf.Session() as sess:#开启任务,为了方便,起了别名sess
      init = tf.global_variables_initializer()#同上
      sess.run(init)#初始化全部变量

      print('w = ', sess.run(w), 'b = ', sess.run(b), 'loss = ', sess.run(loss))#这是随机生成的,开始训练前的w,b和损失
      for step in range(50):#一共训练50次
          sess.run(train)
          print('w = ', sess.run(w), 'b = ', sess.run(b), 'loss = ', sess.run(loss))#这是每一次训练后的w,b和损失

最后只要调用这两个函数就行了

if __name__ == "__main__":
    x_data, y_data = generate_data()
    train(x_data, y_data)

对了,二次方程,甚至多次方程也可以哦

那么今天就到这里。

See you next time!

自学tensorflow——2.使用tensorflow计算线性回归模型的更多相关文章

  1. tensorflow学习笔记四----------构造线性回归模型

    首先通过构造随机数,模拟数据. import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 随机生成100 ...

  2. TensorFlow从1到2(七)线性回归模型预测汽车油耗以及训练过程优化

    线性回归模型 "回归"这个词,既是Regression算法的名称,也代表了不同的计算结果.当然结果也是由算法决定的. 不同于前面讲过的多个分类算法或者逻辑回归,线性回归模型的结果是 ...

  3. tensorflow入门(1):构造线性回归模型

    今天让我们一起来学习如何用TF实现线性回归模型.所谓线性回归模型就是y = W * x + b的形式的表达式拟合的模型. 我们先假设一条直线为 y = 0.1x + 0.3,即W = 0.1,b = ...

  4. 用Tensorflow完成简单的线性回归模型

    思路:在数据上选择一条直线y=Wx+b,在这条直线上附件随机生成一些数据点如下图,让TensorFlow建立回归模型,去学习什么样的W和b能更好去拟合这些数据点. 1)随机生成1000个数据点,围绕在 ...

  5. [tensorflow] 线性回归模型实现

    在这一篇博客中大概讲一下用tensorflow如何实现一个简单的线性回归模型,其中就可能涉及到一些tensorflow的基本概念和操作,然后因为我只是入门了点tensorflow,所以我只能对部分代码 ...

  6. 线性回归模型的 MXNet 与 TensorFlow 实现

    本文主要探索如何使用深度学习框架 MXNet 或 TensorFlow 实现线性回归模型?并且以 Kaggle 上数据集 USA_Housing 做线性回归任务来预测房价. 回归任务,scikit-l ...

  7. 三分钟快速上手TensorFlow 2.0 (下)——模型的部署 、大规模训练、加速

    前文:三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署 TensorFlow 模型导出 使用 SavedModel 完整导出模型 不仅包含参数的权值,还包含计算的流程(即计算 ...

  8. TensorFlow简易学习[2]:实现线性回归

    上篇介绍了TensorFlow基本概念和基本操作,本文将利用TensorFlow举例实现线性回归模型过程. 线性回归算法 线性回归算法是机器学习中典型监督学习算法,不同于分类算法,线性回归的输出是整个 ...

  9. 【TensorFlow篇】--Tensorflow框架初始,实现机器学习中多元线性回归

    一.前述 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,T ...

随机推荐

  1. linux 源码包之脚本安装包的安装

    脚本安装包 脚本安装包并不是独立的软件包类型,常见的实际是源码包.是人为地把安装过程写成了自动安装脚本,只要执行脚本,定义简单的参数,就可以完成安装.非常类似于windows软件的安装方式.在linu ...

  2. 你写的什么垃圾代码让Vsync命令不能及时处理呢?(2)

    接上篇 1.TraceView Traceview看起来复杂,其实很简单: 上部分图中,X代表时间消耗,Y轴代表各个线程中的方法,且使用了不同颜色表示.面积越款,时间越长. 下部分为分析面板,分析面板 ...

  3. Django 请求参数

    Django 请求参数 1.获取URL路径中的参数 需求:假设用户访问127.0.0.1/user/1/2,你想获取1,2.应该怎么操作呢? (1)未命名参数(位置参数) # 在项目下的urls.py ...

  4. 打开struts-config.xml 报错 解决方法Could not open the editor

    打开struts-config.xml 报错 解决办法Could not open the editor 错误信息:Could not open the editor: Project XXX is ...

  5. linux/OSX中“DD”命令制作ISO镜像操作系统安装U盘

    linux或者OS X系统中,使用“dd”命令可以直接在终端命令行模式下,制作ISO镜像的系统安装盘. 一.linux系统以centOS7为例. sudo dd if=镜像路径 of=USB设备路径 ...

  6. ASP.NET 通过配置hiddenSegment禁止目录下资源通过Url形式访问

    根据默认的ASP.NET配置,App_Data下的资源是禁止通过Url形式直接访问的,在实际开发中,可能也会有这样的需求,比如某些是系统资源目录,该目录下的资源也需要像App_Data目录一样禁止访问 ...

  7. RAC性能分析 - gc buffer busy acquire 等待事件

    概述---------------------gc buffer busy是RAC数据库中常见的等待事件,11g开始gc buffer  busy分为gc buffer busy acquire和gc ...

  8. KHFlatButton

    KHFlatButton https://github.com/kylehorn/KHFlatButton 效果: 对于自己做demo来说,每次设置button就不用这么折腾了,几句话就行了,非常爽: ...

  9. 关于UIScrollView有些你很难知晓的崩溃情形

    关于UIScrollView有些你很难知晓的崩溃情形 为了实现以下的功能(按钮之间的切换效果): 简短的代码如下: // // RootViewController.m // BUG // // Co ...

  10. 将Model对象转换成json文本或者json二进制文件

    将Model对象转换成json文本或者json二进制文件 https://github.com/casatwy/AnyJson 注意:经过测试,不能够直接处理字典或者数组 主要源码的注释 AJTran ...