TensorFlow(1)---官方文档简介中所给demo的解说
来源:互联网 发布:淘宝下载电脑版 编辑:程序博客网 时间:2024/06/06 12:51
导语
emmm最近想要入tensorflow,为此还专门装了个ubuntu双系统(因为貌似tensorflow只在linux上支持python2.7),官方不是给了段关于简单实用tensorflow实现平面拟合的代码吗,好像对于我这种小白来说,其中的一些语法不能一眼看懂,所以就记录一下咯~
开始讲解
import tensorflow as tfimport numpy as np
这是本次将要使用到的库
x_data = np.float32(np.random.rand(2, 100)) # 随机输入y_data = np.dot([0.100, 0.200], x_data) + 0.300
这里的x_data是一个包含两个列表的列表,然后其中的每个列表都是一个含有100个元素的列表
这里的y_data是先使用了一个np.dot()方法,这个方法的作用就是做积,且若我们传入的是二维的向量,它就会做矩阵乘法,例如在这个例子中,我们就是让
进行矩阵相乘,然后再在他们所的到的结果的基础上加上0.3。所以,也就是
用该方程得到的一系列的三维空间的点。
b = tf.Variable(tf.zeros([1]))W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))y = tf.matmul(W, x_data) + b
这里就使用到了tensorflow中的Variable的方法,具体Variable的作用我们暂且将它当作定义变量的方法吧。在Variable()中其实时可以输入Tensor,即张量,即任意维度的量。那么张量该如何来表示呢?
tf.zeros([1])和tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))即为两种为张量的变量。
然后这里的y也通过b和W这两个变量成为了Variable元素(与b,W不同,y这个Variable是基于b和W和x_data而生成的),tf.matmul表示矩阵的乘法。
所以,到目前我们已经有b,W,y这三个Variable了。
# 最小化方差loss = tf.reduce_mean(tf.square(y - y_data))optimizer = tf.train.GradientDescentOptimizer(0.5)train = optimizer.minimize(loss)
其中的loss第一眼看就大概能够明白它是用来求平均的,而tf.square(y-y_data)的含义是平方,那么将差距的平方求和再取平均这不就是方差的定义吗~
回顾现在已有的变量,已经有了虚拟数据y和真实数据y_data,而我们的目的是要找到一个平面去拟合所有的真实数据,将计算出来的y与y_data作差,那么显然他们的差距越小,拟合的效果也就越好。所以也就是loss这个变量越小,拟合的结果也就越好。
那么代码中对optimizer的定义,其作用就可以类似与sklearn中对分类其clf的定义了,其目的主要是想说明用哪种方法来进行学习。这里是使用的GradientDescentOptimizer,也就是梯度下降了。使用该方法需要输入一个参数0.5(这里我们不细说这个参数是什么了)
然后再将要做的事情汇总在train这个变量中,即使用梯度下降发对loss这个变量进行最小化,通过改变Variable:b和W。该做的准备工作基本已经做完,接着我们就开始将程序进行初始化和训练
# 初始化变量init = tf.initialize_all_variables()# 启动图 (graph)sess = tf.Session()sess.run(init)
以上是将Variables变量进行初始化,然后启动图
# 拟合平面for step in xrange(0, 201): sess.run(train) if step % 20 == 0: print step, sess.run(W), sess.run(b)
然后这部分代码是对模型的训练,并在训练的过程中输出step和run,如果我们要输出loss的话,可以通过使用
with sess.as_default(): print loss.eval()
输出结果如下:
可以看到loss越来越小,即拟合的效果越来越接近~
另外这里补充一下如何输出张量的数值。emmm是可以将张量的数值输出出来的喔~(注意是输出Tensor的值,而不是输出Variable的值):
或者,如果目标张量时通过变量计算出来的话,可以在使用了with sess.as_default()之后进行输出:
- TensorFlow(1)---官方文档简介中所给demo的解说
- tensorflow(3)---官方文档MNIST问题的实现思路解说
- Android中运行TensorFlow程序1-运行官方demo
- 浅谈android官方文档中自定义view的demo
- 解析Tensorflow官方PTB模型的demo
- TensorFlow 官方文档中文版
- TensorFlow 官方文档中文版
- TensorFlow 官方文档中文版
- TensorFlow 官方文档中文版
- TensorFlow 官方文档中文版
- tensorflow官方文档中文版
- TensorFlow 官方文档中文版
- 从所给文档中显示出所含关键词的那一行
- 基于官方文档的matplotlib简介
- TENSORFLOW官方文档-MNIST小结
- Tensorflow官方中文文档(HR)
- TensorFlow官方中文文档-读书笔记
- 《TensorFlow官方文档》快速入门
- 浅析深拷贝之写时拷贝&引用计数
- PC^2个人使用总结
- hive2.1.1 和 spark2.1.2
- 51Nod 1090 3个数和为0
- Spring MVC @ModelAttribute 详解
- TensorFlow(1)---官方文档简介中所给demo的解说
- Nginx和OpenResty专栏帖
- Objective-C底层数据结构
- 云服务 IaaS,PaaS,SaaS 的区别
- Mybatis开启数据库字段自动映射为驼峰命名
- Spring, MyBatis 多数据源的配置和管理
- USART
- LightOJ
- 广元外国语的模拟赛(最短路)