TensorFlow入门
本文主要参考《Tensorflow 实战Google深度学习框架》一书介绍TensorFlow的基本概念。
TensorFlow的Hello World示例程序如下:
#coding:utf8 #通过import操作加载TensorFlow: import tensorflow as tf #定义两个常量向量a b a = tf.constant([1.0,2.0],name="a") b = tf.constant([2.0,3.0],name="b") #将两个向量加起来 result = a+b #生成一个会话 sess = tf.Session() #通过会话来计算结果 xxx = sess.run(result) print(result) #Tensor("add:0", shape=(2,), dtype=float32) print(xxx) #[ 3. 5.] sess.close()
1.TensorFlow计算模型---计算图
计算图是TensorFlow中最基本的一个概念,TensorFlow中的所有计算都会被转化为计算图上的节点。
TensorFlow中的Tensor表示张量(多维数组),TensorFlow中的Flow表示张量之间通过计算流相互转换的过程。
TensorFlow的每一个计算都是图上的一个节点,节点之间的边描述了节点之间的依赖关系。
TensorFlow程序一般分为两个阶段:
- 定义计算图中的所有计算
比如上面的示例代码中先定义了两个输入,然后定义了一个计算来得到它们的和。
TensorFlow会自动将定义的计算转化为图上面的节点
TensorFlow支持通过tf.Graph函数生成新的计算图,不同计算图上的张量和运算不会共享。 - 执行阶段
使用TensorFlow中的会话session来执行定义好的运算。
会话拥有并管理TensorFlow程序运行时的所有资源
TensorFlow中使用会话的模式有两种:
(1)明确调用会话生成和关闭函数:sess = tf.Session() sess.run() sess.close()
(2)利用python的上下文管理机制,将所有的计算放在with中,with tf.Seesion() as sess:sess.run()
另外:在设定默认会话之后,可以通过Tensor.eval()函数计算张量的取值:sess = tf.Session() with sess.as_default():print(result.eval())
直接生成默认会话函数sess = tf.InteractiveSession() sess即为默认会话函数
张量
在TensorFlow中,所有的数据都以张量的形式表示,零阶张量标识一个数,一阶张量为向量,也就是一个一维数组,n阶张量可以理解为n维数组。
张量中并没有真正的保存数字,它保存的只是如何得到这些数字的计算过程。例如实例代码中的result输出结果为Tensor("add:0", shape=(2,), dtype=float32)--add:0表示result这个张量是计算节点“add”输出的第一个结果;shape=(2,)标识张量的维度信息,说明了张量result是一个一维数组,数组长度为2;dtype=float32标识张量的类型为浮点型。