引言:
最近tensorflow很火,看到国内都有不少人开始玩起来了,自己最近有些想法想玩玩,于是开始入门搞一下,因为自己只有一个台式电脑,于是就装了个cpu版的tensorflow,安装过程挺顺利,一两句命令搞定,最后遇到过glibc的版本问题,直接升级了Ubuntu版本就好了。
于是,开始入门了。下面是我学习的笔记,水平有限,如有不对,敬请指教。
在tensorflow框架下,定义了tensor这么一个数据结构,她是可以任意n维空间的数据表达,这个n称之为tensor的阶,0阶的就是一个数,1阶的就是一个向量,2阶就是一个矩阵,3阶就是一个立方体,等等。
当然,tensor中里面的数据类型可以指定,比如float32,int32等。
Tensorflow的编程思想主要是如下几点:
综合来说,就是用tensor定义了一堆数据,里面可以有常量也可以有变量,然后用一个个operation表示计算步骤,这些operation节点连起来构成了一个graph表示计算任务。graph可以有多个,但对于大部分程序一个graph就够了,作为初学者,可以忽略多graph的情况,tensorflow会提供一个默认的graph。graph定义好,计算并不会马上执行,需要通过session来启动graph的执行。Session中的每一次计算operation,都可以通过fetch的方式把对应的tensor返回作为计算结果。而传给计算operation的参数,可以直接用变量或者常量的名字,也可以通过feed的形式传参。
实例1:
下面是两个向量点乘的实例,展示了基本的operation和graph定义,以及session启动。
执行结果:
实例2:
下面是用变量表示graph计算的状态信息的实例,值得关注的是,operation之间的依赖关系。
从代码中可以看到,我们只是显示执行了update这个operation,但是没有显示执行new_value这个operation,不过通过执行结果可以判断,new_value这个operation的确是触发执行了,也许是state每次变化时检查到依赖立刻触发new_value这个operation的执行,也许是要执行update这个operation时发现有个依赖的new_value这个operation需要触发。按照目前的理解,更加倾向于后者,有点类似编程中的闭包的概念。
实例3:
下面是一个通过fetch机制,把tensor作为结果返回的实例
实例4:
下面是一个通过feed机制把参数传进计算operation的实例
实例5:
线性回归经典实例
值得注意的是,在tensorflow里面实现线性回归,只需要把预测模型和损失函数定义好基本就可以了,里面有梯度下降优化器帮你求解,不必自己再写。
参考资料:
张量的阶、形状、数据类型
http://wiki.jikexueyuan.com/project/tensorflow-zh/resources/dims_types.html
Tensorflow基本使用
http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/basic_usage.html
Tensorflow简介
http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/introduction.html
Tensorflow变量:创建、初始化、保存和加载
http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/variables.html
linear_regression
https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/2_BasicModels/linear_regression.py
入门级解读:小白也能看懂的TensorFlow介绍
http://it.sohu.com/20170221/n481292094.shtml
TensorFlow入门一
http://hacker.duanshishi.com/?p=1639
本文作者:linger
本文链接:http://blog.csdn.net/lingerlanlan/article/details/61616906