张量是TensorFlow最主要的数据结构,张量是数学领域的概念,具体到TensorFlow中,一个张量就是一个张量类的实例,是绑定了相关运算的一个特定类型的多维数组。

1、张量的属性:

  • 所有张量都有一个静态的类型和动态的维数,也就是说你可以实时的改变一个张量的内部结构。
  • 只有张量类型的对象才能在计算图的节点中传递。
  • 张量的阶(rank):表示张量的维度,但跟矩阵的秩又不太一样。它表示张量的维度的质量。

表1-1 张量的阶
数学表示
0 标量(Scalar)
1 向量(Vector)
2 矩阵(Matrix)
3 3维张量(3-tensor)
n n维张量(n-tensor)
  • 张量的形状(shape):形如[[,][,]] ,或0阶:比如单个数字2。下面举个例子:
import tensorflow as tf
tens1 = tf.constant([[[1,2],[2,3]],[[3,4],[5,6]]])
sess = tf.session()
print(sess.run(tens1)[1,1,0])

#输出结果为5
#[1,1,0]  其中第一个1表示取[[3,4],[5,6]]
#第二个1表示取[5,6]
#第三个0表示取5
#所以结果为5
  • 张量的数据类型:这里主要说一下tf.string,可变长度的字节数组,每一个张量元素都是一个字节数组。

2、张量的创建

  • TensorFlow和numpy是可互操作的,通常调用eval()函数会返回numpy对象。该函数可以用作标准数值工具。(注:张量对象只是一个操作结果的符号化句柄,它并不持有该操作的结果。所以可以使用eval()方法来获取实际的值,等价于Session.run(tensor_to_eval) )
  • tf.convert_to_tensor()方法将python对象转化为tensor对象,可以是tensor对象、numpy数组、Python列表、Python标量。