介绍如何通过张量来保存和获取 TensorFlow 计算的结果 。
在 TensorFlow程序中,所有 的数据都通过张量的形式来表示张量可以被简单理解为多维数组零阶张量表示标量( scalar ) ,也就是一个数①: 第一阶张量为向量 C vector),也就是一个一维数组;第 n 阶张量可以理解为一个 n 维数组
在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。
import tensorflow as tf
# tf.constant 是一个计算,这个计算的结果为一个张量 , 保存在变量 a 中。
a= tf.constant([l . O, 2 . 0] , name=” a”)
b = tf.constant ( [2 . 0 , 3 . 0] , name=”b ”)
result = tf.add (a , b , name=” add”)
print result
输出 :
Tensor ( ” add : 。 ”, shape= ( 2 ,), dtype=float32)
从以上代码可以看出 TensorFlow 中的张量和 NumPy 中 的数组不同, TensorFlow 计算的结果不是一个具体的数字 , 而且一个张量的结构。
从上面代码的运行结果可以看出, 一个张量中主要保存了三个属性 : 名字( name )、维度( shape )和类型( type )。
张量的第一个属性名字不仅是一个张量的唯一标识符 , 它同样也给出了这个张量是如何计算出来的。
所 以张量和计算图上节点所代表的计算结果是对应的
其中 node 为节点的名称, src一output 表示当前张量来自节点的第几个输出。比如上面代码打出来的“ add :。”就说明了 result 这个张量是计算节点“ add” 输出的第一个结果(编号从 O 开始)。
**张量的第二个属性是张量的维度( shape )。**这个属性描述了 一个张量的维度信息。比如上面样例中 shape=(2,)说明了张量 result 是一个一维数组 , 这个数组的长度为 2。
张量的第三个属性是类型( type ),每一个张量会有一个唯一的类型。
TensorFlow 会对参与运算的所有张量进行类型的检查 , 当发现类型不匹配时会报错
如果不指定类型, TensorFlow 会给出默认的类型,比如不带小数点的数会被默认为 int32,带小数点的会默认为 float32 。 因为使用默认类型有可能会导致潜在的类型不匹配问题,所以一般建议通过指定 dtype 来明确指出变量或者常量的类型 。
TensorFlow 支持 14 种不同的类型, 主要包括了实数( tf.丑oat32 、 tf.float64 )、整数( tf.int8 、 tf.intl 6 、 tf.int32 、 tf.int64 、tf.uint8 )、布尔型 C tf.bool) 和复数( tf.complex64 、tf.complex128 ) 。