-
基础
TensorFlow 基础
TensorFlow 模型建立与训练
基础示例:多层感知机(MLP)
卷积神经网络(CNN)
循环神经网络(RNN)
深度强化学习(DRL)
Keras Pipeline
自定义层、损失函数和评估指标
常用模块 tf.train.Checkpoint :变量的保存与恢复
常用模块 TensorBoard:训练过程可视化
常用模块 tf.data :数据集的构建与预处理
常用模块 TFRecord :TensorFlow 数据集存储格式
常用模块 tf.function :图执行模式
常用模块 tf.TensorArray :TensorFlow 动态数组
常用模块 tf.config:GPU 的使用与分配 -
大规模训练与加速
TensorFlow 分布式训练
使用 TPU 训练 TensorFlow 模型 -
附录
强化学习基础简介
计算图纸
Tensorflow 首先要定义神经网络的结构, 然后再把数据放入结构当中去运算和 training.
因为TensorFlow是采用 数据流图(data flow graphs) 来计算, 所以首先我们得创建一个数据流图, 然后再将我们的数据(数据以张量(tensor)的形式存在)放在数据流图中计算. 节点(Nodes)
在图中表示数学操作,图中的线(edges)
则表示在节点间相互联系的多维数据数组, 即张量(tensor)
. 训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是TensorFlow名字的由来.
Tensor 张量意义
张量(Tensor): 张量有多种.
- 零阶张量为 纯量或标量 (scalar) 也就是一个数值. 比如 [1]
random_float = tf.random.uniform(shape=())
定义一个随机数 - 一阶张量为 向量 (vector), 比如 一维的 [1, 2]
zero_vector = tf.zeros(shape=(2))
定义一个有2个元素的零向量 - 二阶张量为 矩阵 (matrix), 比如 二维的 [[1, 2],[3, 4]]
A = tf.constant([[1., 2.], [3., 4.]])
定义一个2×2的常量矩阵 - 以此类推, 还有 三阶 三维的 …
张量的重要属性是其形状、类型和值。可以通过张量的 shape
、 dtype
属性和 numpy()
方法获得。例如:
# 查看矩阵A的形状、类型和值
print(A.shape) # 输出(2, 2),即矩阵的长和宽均为2
print(A.dtype) # 输出<dtype: 'float32'>
print(A.numpy()) # 输出[[1. 2.]
# [3. 4.]]
- TensorFlow 的大多数 API 函数会根据输入的值自动推断张量中元素的类型(一般默认为
tf.float32
)。不过你也可以通过加入dtype
参数来自行指定类型,例如zero_vector = tf.zeros(shape=(2), dtype=tf.int32)
将使得张量中的元素类型均为整数。 - 张量的
numpy()
方法是将张量的值转换为一个 NumPy 数组。
自动求导机制
在机器学习中,我们经常需要计算函数的导数。TensorFlow 提供了强大的 自动求导机制 来计算导数。在即时执行模式下,TensorFlow 引入了 tf.GradientTape()
这个 “求导记录器” 来实现自动求导。
在机器学习中,更加常见的是对多元函数求偏导数,以及对向量或矩阵的求导。这些对于 TensorFlow 也不在话下。以下代码展示了如何使用 tf.GradientTape()
计算函数 L ( w , b ) = ∥ X w + b − y ∥ 2 L(w, b) = \|Xw + b - y\|^2 L(w,b)=∥Xw+b−y∥2在 w = ( 1 , 2 ) T w = (1, 2)^T w=(1,2)T, b = 1 b = 1 b=1 时分别对 w , b w, b w,b 的偏导数。其中 X = [ 1 2 3 4 ] , y = [ 1 2 ] X = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, y = \begin{bmatrix} 1 \\ 2\end{bmatrix} X=