张量
张量是 TensorFlow 中计算的基本元素和基本数据结构。可能是您需要学习使用 TensorFlow 的唯一数据结构。张量是由维度,形状和类型标识的 n 维数据集合。
Rank 是张量的维数,形状是表示每个维度的大小的列表。张量可以具有任意数量的尺寸。您可能已经熟悉零维集合(标量),一维集合(向量),二维集合(矩阵)的数量,以及多维集合。
标量值是等级 0 的张量,因此具有[1]的形状。向量或一维数组是秩 1 的张量,并且具有[列]或[行]的形状。矩阵或二维数组是秩 2 的张量,并且具有[行,列]的形状。三维数组将是秩 3 的张量,并且以相同的方式,n 维数组将是秩n
的张量。
请参阅以下资源以了解有关张量及其数学基础的更多信息:
- 维基百科上的张贴页面,地址为 https://en.wikipedia.org/wiki/Tensor
- 来自美国国家航空航天局的宣言导言,参见 https://www.grc.nasa.gov/www/k-12/Numbers/Math/documents/Tensors_TM2002211716.pdf
张量可以在其所有维度中存储一种类型的数据,并且其元素的数据类型被称为张量的数据类型。
您还可以在 https://www.tensorflow.org/api_docs/python/tf/DType 查看最新版本的 TensorFlow 库中定义的数据类型。
在编写本书时,TensorFlow 定义了以下数据类型:
TensorFlow Python API 数据类型 | 描述 |
---|---|
tf.float16 |
16 位半精度浮点数 |
tf.float32 |
32 位单精度浮点 |
tf.float64 |
64 位双精度浮点 |
tf.bfloat16 |
16 位截断浮点 |
tf.complex64 |
64 位单精度复合体 |
tf.complex128 |
128 位双精度复合体 |
tf.int8 |
8 位有符号整数 |
tf.uint8 |
8 位无符号整数 |
tf.uint16 |
16 位无符号整数 |
tf.int16 |
16 位有符号整数 |
tf.int32 |
32 位有符号整数 |
tf.int64 |
64 位有符号整数 |
tf.bool |
布尔 |
tf.string |
串 |
tf.qint8 |
量化的 8 位有符号整数 |
tf.quint8 |
量化的 8 位无符号整数 |
tf.qint16 |
量化的 16 位有符号整数 |
tf.quint16 |
量化的 16 位无符号整数 |
tf.qint32 |
量化的 32 位有符号整数 |
tf.resource |
处理可变资源 |
我们建议您避免使用 Python 本地数据类型。 使用 TensorFlow 数据类型来定义张量,而不是 Python 本地数据类型。
可以通过以下方式创建张量:
- 通过定义常量,操作和变量,并将值传递给它们的构造函数。
- 通过定义占位符并将值传递给
session.run()
。 - 通过
tf.convert_to_tensor()
函数转换 Python 对象,如标量值,列表和 NumPy 数组。
让我们来看看创建张量的不同方法。