Tensorflow学习笔记(一):初识TensorFlow——实现线性回归
2017-10-31 17:00
316 查看
在使用 TensorFlow时要注意几点:
使用图 (graph) 来表示计算任务在被称之为会话 (Session) 的上下文 (context) 中执行图
使用tensor表示数据
通过变量(Variable)维护状态
使用feed和fetch可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据
利用TensorFlow实现简单的线性回归估计:
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt num_points = 1000 vectors_set = [] x1 = np.random.normal(0.0,0.55,num_points) y1 = x1*0.2+0.5+np.random.normal(0.0,0.02,num_points) plt.scatter(x1,y1,c='r') plt.show()
先造一组数据:在y=0.2x+0.5上采集1000个点并加上随机偏移。显示出来如下所示:
利用TensorFlow来对上面的数据进行线性回归拟合
w = tf.Variable(tf.random_uniform([1],-1.0,1.0),name='w') b = tf.Variable(tf.zeros([1]),name='b') y = w*x1+b loss = tf.reduce_mean(tf.square(y-y1),name='loss') optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss,name='train') sess = tf.Session() init = tf.global_variables_initializer() sess.run(init) print('w=',sess.run(w),'b=',sess.run(b),'loss=',sess.run(loss)) for i in range(20): sess.run(train) print('w=',sess.run(w),'b=',sess.run(b),'loss=',sess.run(loss))
w初始化为一个随机变量,b初始化为0(TensorFlow的变量定义真麻烦)
定义损失函数loss,为所有样本预测值与真值差的平方的均值。
优化器采用梯度下降法,学习率为0.5
TensorFlow要用tf.global_variables_initializer()来初始化各个变量
迭代20次,loss越来越小,w与b越来越接近设定值.
总结
TensorFlow使用图来表示计算任务,图中的节点称之为op(operation)TensorFlow程序被可分成一个构建阶段和一个执行阶段
构建阶段:是要创建图,也就是创建op,如常量这种源op(不需要输入),还有其他的运算处理op,它们的返回值是可以传递给其他op作为输入的。
执行阶段:在一个会话中启动图。创建一个Session,并调用Session.run()来执行操作。
注意:对于上例中的train,在调用run()执行表达式之前,并不会执行训练操作。
TensorFlow的这种用会话来执行图的计算方式看起来非常“别扭”。这主要是因为TensorFlow乃至Python为了实现一些高效的数值计算或复杂运算,都会用到一些其他函数库,这些库一般都是用外部语言(C++)实现的,从外部计算切换回Python开销很大,即使用GPU或者分布式计算方式,这部分开销都不可忽略。所以TensorFlow不单独运行单一复杂操作,都是先用图来描述一系列可交互的计算操作,然后全部一起在Python之外运行。
相关文章推荐
- Tensorflow学习笔记(三)——用Tensorflow实现线性回归和逻辑回归
- Tensorflow实现线性回归
- 用tensorflow实现线性回归问题
- tensorflow 实现线性回归
- TensorFlow实现线性回归
- 线性回归(linear_regression),多项式回归(polynomial regression)(Tensorflow实现)
- [深度学习] (2):实现简单的线性回归(使用TensorFlow优化)
- 基于Tensorflow实现基本的线性回归(Linear regression)
- 利用tensorflow实现线性回归(cholesky分解)
- Tensorflow 实现线性回归(迭代方法)
- 用tensorflow实现线性回归和相应的损失函数的运用
- TensorFlow实战1:实现单变量线性回归
- 使用TensorFlow实现简单的线性回归(LinearRegression)
- 用TensorFlow内建的Cholesky矩阵分解法实现矩阵分解的线性回归
- 线性回归、梯度下降以及运用TensorFlow进行简单实现
- tensorflow 实现 正规方程求解线性回归
- 使用tensorflow实现线性回归
- tensorflow实战一---基于线性回归简单实现mnist手写体识别
- Keras上基于TensorFlow实现简单线性回归模型
- tensorflow实现线性回归(矩阵解法)