ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 张量 **张量**是 TensorFlow 中计算的基本元素和基本数据结构。可能是您需要学习使用 TensorFlow 的唯一数据结构。张量是由维度,形状和类型标识的 n 维数据集合。 **Rank** 是张量的维数,**形状**是表示每个维度的大小的列表。张量可以具有任意数量的尺寸。您可能已经熟悉零维集合(标量),一维集合(向量),二维集合(矩阵)的数量,以及多维集合。 标量值是等级 0 的张量,因此具有[1]的形状。向量或一维数组是秩 1 的张量,并且具有[列]或[行]的形状。矩阵或二维数组是秩 2 的张量,并且具有[行,列]的形状。三维数组将是秩 3 的张量,并且以相同的方式,n 维数组将是秩`n`的张量。 请参阅以下资源以了解有关张量及其数学基础的更多信息: * 维基百科上的张贴页面,地址为 [https://en.wikipedia.org/wiki/Tensor](https://en.wikipedia.org/wiki/Tensor) * 来自美国国家航空航天局的宣言导言,参见 [https://www.grc.nasa.gov/www/k-12/Numbers/Math/documents/Tensors_TM2002211716.pdf](https://www.grc.nasa.gov/www/k-12/Numbers/Math/documents/Tensors_TM2002211716.pdf) 张量可以在其所有维度中存储一种类型的数据,并且其元素的数据类型被称为张量的数据类型。 您还可以在 [https://www.tensorflow.org/api_docs/python/tf/DType](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 数组。 让我们来看看创建张量的不同方法。