张量
阶 | 数学实例 |
---|---|
0 | 标量(只有大小) |
1 | 矢量(大小和方向) |
2 | 矩阵(数据表) |
3 | 3 阶张量(数据立体) |
N | N 阶张量(自行想象) |
数据类型
Tensor 类型 | 描述 |
---|---|
tf.float32 | 32 位浮点数 |
tf.float64 | 64 位浮点数 |
tf.int64 | 64 位有符号整型 |
tf.int32 | 32 位有符号整型 |
tf.int16 | 16 位有符号整型 |
tf.int8 | 8 位有符号整型 |
tf.uint8 | 8 位无符号整型 |
tf.string | 可变长度的字节数组 |
tf.bool | 布尔型 |
tf.complex64 | 实数和虚数 |
代码
形状为 (2, 2) 的二维变量:
v=tf.Variable([[1,2],[3,4]])
形状为 (2, 2) 的二维常量:
c = tf.constant([[1, 2], [3, 4]])
直接通过 .numpy() 输出张量的 NumPy 数组:
c.numpy()
-
tf.zeros
:新建指定形状且全为 0 的常量 Tensor -
tf.zeros_like
:参考某种形状,新建全为 0 的常量 Tensor -
tf.ones
:新建指定形状且全为 1 的常量 Tensor -
tf.ones_like
:参考某种形状,新建全为 1 的常量 Tensor -
tf.fill
:新建一个指定形状且全为某个标量值的常量 Tensor -
tf.linspace
:创建一个等间隔序列。 -
tf.range
:创建一个数字序列。
矩阵乘法:
c = tf.linalg.matmul(a, b)
矩阵转置:
tf.linalg.matrix_transpose(c)
使用 tf.GradientTape 跟踪全部运算过程,以便在必要的时候计算梯度:
w = tf.Variable([1.0]) # 新建张量
with tf.GradientTape() as tape: # 追踪梯度
loss = w * w
grad = tape.gradient(loss, w) # 计算梯度
grad
l o s s = w 2 → ∂ l o s s ∂ w = 2 w loss = w^2 \rightarrow \frac {\partial loss}{\partial w} = 2w loss=w2→∂w∂loss=2w
所以,当 w 等于 1 时,计算结果为 2。
常用模块
tf.
:包含了张量定义,变换等常用函数和类。tf.data
:输入数据处理模块,提供了像tf.data.Dataset
等类用于封装输入数据,指定批量大小等。tf.image
:图像处理模块,提供了像图像裁剪,变换,编码,解码等类。tf.keras
:原 Keras 框架高阶 API。包含原tf.layers
中高阶神经网络层。tf.linalg
:线性代数模块,提供了大量线性代数计算方法和类。tf.losses
:损失函数模块,用于方便神经网络定义损失函数。tf.math
:数学计算模块,提供了大量数学计算函数。tf.saved_model
:模型保存模块,可用于模型的保存和恢复。tf.train
:提供用于训练的组件,例如优化器,学习率衰减策略等。tf.nn
:提供用于构建神经网络的底层函数,以帮助实现深度神经网络各类功能层。tf.estimator
:高阶 API,提供了预创建的 Estimator 或自定义组件。