此系列将会每日持续更新,欢迎关注

线性回归(linear regression)的TensorFlow实现

#这里是基于python 3.7版本的TensorFlow

TensorFlow是一个机器学习的利器,打包了众多的机器学习中的模型以及各种数学上的处理

因此利用TensorFlow来学习机器学习能起到事半功倍的效果。

以下代码即是线性回归的实现(实现对函数  y = 0.1 x + 0.3  的回归)代码内给出详细注释便于理解

import tensorflow as tf

import numpy as np

#生成原始数据 begin

x_data = np.random.rand(100).astype(np.float32)       #利用rand(100)生成一个一行100列的矩阵,

y_data = x_data*0.1 + 0.3                   #astype(np.float32)是由于TensorFlow处理的数据类型通常为此类型

#生成原始数据 end

### 构建tensorflow的结构 start ###
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))  #权重,即为 y = ax + b 中的 a 
biases = tf.Variable(tf.zeros([1]))                #偏置值,即为 y = ax + b 中的 b


y = Weights*x_data + biases


loss = tf.reduce_mean(tf.square(y-y_data))          #reduce_mean意为取y-y_data的平方的均值
optimizer = tf.train.GradientDescentOptimizer(0.5)      #这里采用最简单的梯度下降法来实现回归,梯度下降法将会在以后的博客中利用octave梳理内部细节的实现

                                      #简单来讲,梯度下降就是:1.求导 2.向导数为零的点靠拢。

                                    #这里的0.5表示学习率,通俗来说就是向导数为零的点靠拢的速度。
train = optimizer.minimize(loss)                #使得误差最小
### create tensorflow structure end ###


sess = tf.Session()
init = tf.global_variables_initializer()    #将tf.global_variables_initializer(),即全局变量初始化写为init,这样后面就可以通过sess.run(init)来进行初始化
sess.run(init)                    #这一步才真正意义上初始化!


for step in range(201):
  sess.run(train)                  #训练一次
  if step % 10 == 0:
  print(step, sess.run(Weights), sess.run(biases))#每10次输出一下结果,进行观察

 

  这里是我的输出结果(因rand不同程序运行多次的结果可能各不相同)

================ RESTART: D:/TensorFlow/linear regression.py ================
0 [0.36862874] [0.21253814]
20 [0.17672797] [0.25930387]
40 [0.12394582] [0.28729928]
60 [0.10747318] [0.29603627]
80 [0.10233228] [0.29876298]
100 [0.10072788] [0.29961395]
120 [0.10022715] [0.29987952]
140 [0.10007092] [0.2999624]
160 [0.10002212] [0.29998827]
180 [0.10000691] [0.29999635]
200 [0.10000216] [0.29999888]

几点要点补充:

1. TensorFlow中的一些语法会有一些反直觉:当你要声明一个变量时,必须用tf.Variable来声明这个变量,

而你想要输出某个数据时,例如Weights,必须采用print(sess.run(Weights))才可将其输出

2. Session 是 Tensorflow 为了控制,和输出文件的执行的语句. 运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分.

例如:

import tensorflow as tf
# create two matrixes matrix1 = tf.constant([[3,3]])
matrix2 = tf.constant([[2],
[2]])
product = tf.matmul(matrix1,matrix2)
sess = tf.Session()  result = sess.run(product) print(result) sess.close()

输出结果为[[12]]。

TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现的更多相关文章

  1. 深度学习 Deep Learning UFLDL 最新 Tutorial 学习笔记 1:Linear Regression

    1 前言 Andrew Ng的UFLDL在2014年9月底更新了. 对于開始研究Deep Learning的童鞋们来说这真的是极大的好消息! 新的Tutorial相比旧的Tutorial添加了Conv ...

  2. 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression

    机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...

  3. 机器学习 (一) 单变量线性回归 Linear Regression with One Variable

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...

  4. 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  5. ML 线性回归Linear Regression

    线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...

  6. tensorflow学习笔记——自编码器及多层感知器

    1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...

  7. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  8. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

  9. Ng第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下 ...

随机推荐

  1. nodejs下cannot post错误

    我写了一段CoffeeScript代码,主要是流程为: 1.当客户端请求方式为GET时,输出页面,页面上有个form,form 里有个submit按钮.form的 action="" ...

  2. luogu2679 子串

    题目大意 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问 ...

  3. [CF391E2]Three Trees

    https://zybuluo.com/ysner/note/1246822 题面 有三棵树,建两条边让他们相连,最大化所有点对距离之和. \(40pts\ n\leq1000\) \(100pts\ ...

  4. yii2的form表单用法

    使用表单 本章节将介绍如何创建一个从用户那搜集数据的表单页.该页将显示一个包含 name 输入框和 email 输入框的表单.当搜集完这两部分信息后,页面将会显示用户输入的信息. 为了实现这个目标,除 ...

  5. codevs1258 关路灯(☆区间dp)

    1258 关路灯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master     题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他必须 ...

  6. [Swift通天遁地]二、表格表单-(16)在表单行内嵌入日期和时间拾取器

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. 51nod 1222 莫比乌斯反演

    思路: yhx找的反演题 题解已经烂大街了 #pragma GCC optimize("O3") //By SiriusRen #include <bits/stdc++.h ...

  8. BZOJ 4867 分块+神tm卡常

    思路: 注意到len<=10 按照权值max-min<=sqrt(n)*len 分块 记一下前缀和  每修改sqrt(n)次以后重新分块   修改的时候整块打标记  两边重构 (这题常数卡 ...

  9. Codeforces 769D

    太久没写搜索因为递归边界问题卡了很久.. 题意:定义k-interesting:如果两个数的二进制形式有k位不相同,则称之为k-interesting.给出n和k,输入n个大小在[0,10000]之间 ...

  10. ORACLE SEQUENCE用法(转)

    ORACLE SEQUENCE用法 在oracle中sequence就是序号,每次取的时候它会自动增加.sequence与表没有关系. 1.Create Sequence     首先要有CREATE ...