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程序一般分为两个阶段:

  1. 定义计算图中的所有计算
    比如上面的示例代码中先定义了两个输入,然后定义了一个计算来得到它们的和。
    TensorFlow会自动将定义的计算转化为图上面的节点
    TensorFlow支持通过tf.Graph函数生成新的计算图,不同计算图上的张量和运算不会共享。
  2. 执行阶段
    使用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标识张量的类型为浮点型。

相关推荐