 2 使用Python训练和部署低精度模型 张校捷CONTENTS 低精度的概念和意义 TensorFlow的FP16模型 TensorRT的FP16/Int8模型 总结 1 低精度的概念和意义 实数的16-bit半精度浮点数和8-bit定点数表示 使用低精度的意义 深度学习模型中实数的表示 FP32: E8M23 FP16: E8M7 FP16: E5M10 Int8 (TPU, tf.bfloat16) (tf.float32) SSD-RN50-FPN-640 2.5X speedup FP16浮点数(E5M10)的表示范围 FP16模型的训练方法 Int8模型的推断过程 2 TensorFlow的FP16模型 实数的16-bit半精度浮点数和8-bit定点数表示 使用低精度的意义 TensorCores适用条件 1. 卷积:K(输入通道),C(输出通道) 2. 通用矩阵乘法(GEMM):MxK,KxN,(M,N,K)0 码力 | 24 页 | 981.45 KB | 1 年前3 2 使用Python训练和部署低精度模型 张校捷CONTENTS 低精度的概念和意义 TensorFlow的FP16模型 TensorRT的FP16/Int8模型 总结 1 低精度的概念和意义 实数的16-bit半精度浮点数和8-bit定点数表示 使用低精度的意义 深度学习模型中实数的表示 FP32: E8M23 FP16: E8M7 FP16: E5M10 Int8 (TPU, tf.bfloat16) (tf.float32) SSD-RN50-FPN-640 2.5X speedup FP16浮点数(E5M10)的表示范围 FP16模型的训练方法 Int8模型的推断过程 2 TensorFlow的FP16模型 实数的16-bit半精度浮点数和8-bit定点数表示 使用低精度的意义 TensorCores适用条件 1. 卷积:K(输入通道),C(输出通道) 2. 通用矩阵乘法(GEMM):MxK,KxN,(M,N,K)0 码力 | 24 页 | 981.45 KB | 1 年前3
 Hello 算法 1.0.0b1 Python版asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) 则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) Figure 2‑20 码力 | 178 页 | 14.67 MB | 1 年前3 Hello 算法 1.0.0b1 Python版asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) 则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) Figure 2‑20 码力 | 178 页 | 14.67 MB | 1 年前3
 Hello 算法 1.0.0b2 Python版asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) 则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) Figure 2‑20 码力 | 186 页 | 15.69 MB | 1 年前3 Hello 算法 1.0.0b2 Python版asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) 则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) Figure 2‑20 码力 | 186 页 | 15.69 MB | 1 年前3
 Hello 算法 1.0.0b4 Python版推算时间复杂度本质上是计算“操作数量函数 ?(?)”的渐近上界。接下来,我们来看函数渐近上界的数学 定义。 2. 复杂度 hello‑algo.com 17 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) 则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) Figure 2‑20 码力 | 329 页 | 27.34 MB | 1 年前3 Hello 算法 1.0.0b4 Python版推算时间复杂度本质上是计算“操作数量函数 ?(?)”的渐近上界。接下来,我们来看函数渐近上界的数学 定义。 2. 复杂度 hello‑algo.com 17 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) 则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) Figure 2‑20 码力 | 329 页 | 27.34 MB | 1 年前3
 Hello 算法 1.1.0 Python版notation),表示函数 ?(?) 的 渐近上界(asymptotic upper bound)。 时间复杂度分析本质上是计算“操作数量 ?(?)”的渐近上界,它具有明确的数学定义。 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给 出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑80 码力 | 364 页 | 18.42 MB | 1 年前3 Hello 算法 1.1.0 Python版notation),表示函数 ?(?) 的 渐近上界(asymptotic upper bound)。 时间复杂度分析本质上是计算“操作数量 ?(?)”的渐近上界,它具有明确的数学定义。 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给 出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑80 码力 | 364 页 | 18.42 MB | 1 年前3
 Hello 算法 1.0.0b5 Python版) 的「渐近上界 asymptotic upper bound」。 时间复杂度分析本质上是计算“操作数量函数 ?(?)”的渐近上界,其具有明确的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数0 码力 | 361 页 | 30.64 MB | 1 年前3 Hello 算法 1.0.0b5 Python版) 的「渐近上界 asymptotic upper bound」。 时间复杂度分析本质上是计算“操作数量函数 ?(?)”的渐近上界,其具有明确的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数0 码力 | 361 页 | 30.64 MB | 1 年前3
 Hello 算法 1.0.0 Python版?(?) 的「渐近上界 asymptotic upper bound」。 时间复杂度分析本质上是计算“操作数量 ?(?)”的渐近上界,它具有明确的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数0 码力 | 362 页 | 17.54 MB | 1 年前3 Hello 算法 1.0.0 Python版?(?) 的「渐近上界 asymptotic upper bound」。 时间复杂度分析本质上是计算“操作数量 ?(?)”的渐近上界,它具有明确的数学定义。 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑8 所示,计算渐近上界就是寻找一个函数0 码力 | 362 页 | 17.54 MB | 1 年前3
 python3学习手册random() # 随机生成一个[0,1)范围内的实 数,float random.uniform(0, 5) # 随机生成一个[0,5]范围内的实数, float random.randint(0, 8) # 随机生成一个[0,8]范围内的整数, int random.randrange(1, 100, 2)0 码力 | 213 页 | 3.53 MB | 1 年前3 python3学习手册random() # 随机生成一个[0,1)范围内的实 数,float random.uniform(0, 5) # 随机生成一个[0,5]范围内的实数, float random.randint(0, 8) # 随机生成一个[0,8]范围内的整数, int random.randrange(1, 100, 2)0 码力 | 213 页 | 3.53 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Python 版notation),表示函数 ?(?) 的 渐近上界(asymptotic upper bound)。 时间复杂度分析本质上是计算“操作数量 ?(?)”的渐近上界,它具有明确的数学定义。 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给 出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑80 码力 | 364 页 | 18.43 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Python 版notation),表示函数 ?(?) 的 渐近上界(asymptotic upper bound)。 时间复杂度分析本质上是计算“操作数量 ?(?)”的渐近上界,它具有明确的数学定义。 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的 ? > ?0 ,均有 ?(?) ≤ ? ⋅ ?(?) ,则可认为 ?(?) 给 出了 ?(?) 的一个渐近上界,记为 ?(?) = ?(?(?)) 。 如图 2‑80 码力 | 364 页 | 18.43 MB | 10 月前3
 Python 标准库参考指南 3.13 如果提供了两个参数或是使用了关键字参数,则每个参数可以为任意数字类型(包括复数)。如果 两个参数均为实数值,则会返回一个实部为 real 而虚部为 imag 的复数。如果两个参数均为复数值, 则会返回一个实部为 real.real-imag.imag 而虚部为 real.imag+imag.real 的复数。如果有一 个参数为实数值,则上面的表达式中将只用到实部。 如果省略所有参数,则返回 0j。 数字类型 --- 和bool, real, imag, +, -, *, /, **, abs(), conjugate(), == 以及 !=。除 - 和 != 之外所有操作都是 抽象的。 real 抽象的。得到该数字的实数部分。 imag 抽象的。得到该数字的虚数部分。 abstractmethod conjugate() 抽象的。返回共轭复数。例如 (1+3j).conjugate() == (1-3j)。 13.0 class numbers.Real 相对于Complex,Real 加入了只适用于实数的操作。 简单的说,它们是:转化至float,math.trunc()、round()、math.floor()、math.ceil()、 divmod()、//、%、<、<=、>、和 >=。 实数同样默认支持complex()、real、imag 和conjugate()。 class numbers0 码力 | 2246 页 | 11.74 MB | 9 月前3 Python 标准库参考指南 3.13 如果提供了两个参数或是使用了关键字参数,则每个参数可以为任意数字类型(包括复数)。如果 两个参数均为实数值,则会返回一个实部为 real 而虚部为 imag 的复数。如果两个参数均为复数值, 则会返回一个实部为 real.real-imag.imag 而虚部为 real.imag+imag.real 的复数。如果有一 个参数为实数值,则上面的表达式中将只用到实部。 如果省略所有参数,则返回 0j。 数字类型 --- 和bool, real, imag, +, -, *, /, **, abs(), conjugate(), == 以及 !=。除 - 和 != 之外所有操作都是 抽象的。 real 抽象的。得到该数字的实数部分。 imag 抽象的。得到该数字的虚数部分。 abstractmethod conjugate() 抽象的。返回共轭复数。例如 (1+3j).conjugate() == (1-3j)。 13.0 class numbers.Real 相对于Complex,Real 加入了只适用于实数的操作。 简单的说,它们是:转化至float,math.trunc()、round()、math.floor()、math.ceil()、 divmod()、//、%、<、<=、>、和 >=。 实数同样默认支持complex()、real、imag 和conjugate()。 class numbers0 码力 | 2246 页 | 11.74 MB | 9 月前3
共 29 条
- 1
- 2
- 3














