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

线性回归(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. xcode,git tips

    change organization name 选中project or target,最右侧Utilities面板->Project Document 修改source folder名字 - ...

  2. Spark SQL Catalyst源代码分析之UDF

    /** Spark SQL源代码分析系列文章*/ 在SQL的世界里,除了官方提供的经常使用的处理函数之外.一般都会提供可扩展的对外自己定义函数接口,这已经成为一种事实的标准. 在前面Spark SQL ...

  3. TLabel和TEdit的初次显示过程

    procedure TForm1.Button2Click(Sender: TObject); var l: TLabel;begin l:=TLabel.Create(self); l.Name:= ...

  4. How to create a random UUID in each Request's Headers

    ${=java.util.UUID.randomUUID()}  is OK

  5. 2-sat总结

    算法 构造一个有向图G,每个变量xi拆成两个点2i和2i+1 分别表示xi为假,xi为真 那么对于“xi为真或xj为假”这样的条件 我们就需要连接两条边 2*i —>2*j(表示如果i为假,那么 ...

  6. 53. 部门信息显示 EXTJS 单击树节点

    1. /** * @author sux * @time 2011-1-14 * @desc 部门信息显示 */ deptInfoGridPanel = Ext.extend(Ext.grid.Edi ...

  7. django入门与实践 3-1 环境搭建

    Python 2.7 .Django对2.7.3.5.3.4都是支持的. https://www.djangoproject.com/download/ django对python的兼容情况 pip安 ...

  8. MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式。

    原文链接:https://www.muhanxue.com/essays/2015/01/8623699.html MVC web api 返回JSON的几种方式 1.在WebApiConfig的Re ...

  9. hdu1814Peaceful Commission(2-SAT)

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  10. Java使用Cipher类实现加密,包括DES,DES3,AES和RSA加密

    一.先看一个简单加密,解密实现 1.1 加密 /** * content: 加密内容 * slatKey: 加密的盐,16位字符串 * vectorKey: 加密的向量,16位字符串 */ publi ...