• 文档 >
  • 模块代码 >
  • torch >
  • torch.ao.nn.quantized.modules.functional_modules
快捷键

torch.ao.nn.quantized.modules.functional_modules 的源代码

# mypy: 允许未类型化定义

导入 火炬
来自 火炬 导入 张量
来自 torch._ops 导入 操作


所有 = [浮点功能, 外部浮点功能, 功能性]


[文档] 浮点功能性(火炬.神经网络.模块): r"""浮点运算状态收集器类。 这个类的实例可以用作代替 ``torch.`` 前缀 一些操作。以下为示例用法。 .. 注意: 此类不提供 `forward` 钩子。相反,您必须使用 基底函数之一(例如 ``add``)。 示例:: >>> f_add = FloatFunctional() >>> a = torch.tensor(3.0) >>> b = torch.tensor(4.0) >>> f_add.add(a, b) # 等价于 ``torch.add(a, b)`` 有效的操作名称: - add 加 ReLU 加标量 - 多乘标量 """ 定义 __init__() -> : 超级().__init__() self.activation_post_process = torch.神经网络.身份() 定义 前进(, x): 提升 运行时错误( "FloatFunctional 不应该使用 " + "向前。请使用底层操作" ) r"与 `torch.add(Tensor, Tensor)` 操作等价" def add(, x: 张量, y: 张量) -> 张量: r = PyTorch.(x, y) r = 自己的.激活后处理(r) 返回 r r等价于 `torch.add(Tensor, float)` 的操作 定义 添加标量(self, x: 张量, y: 浮点数) -> 张量: r = PyTorch.(x, y) # 注意:此操作未观察到,因为观察尚未进行 # 不需要此量化操作 返回 r r"""相当于 ``torch.mul(Tensor, Tensor)`` 的操作""" 定义 (自身, x: 张量, y: 张量) -> 张量: r = 火炬.(x, y) r = 自身.激活后处理(r) 返回 r r等效于 `torch.mul(Tensor, float)` 的操作 def mul_scalar(self, x: 张量, y: 浮点数) -> 张量: r = 火炬.(x, y) # 注意:此操作未观察到,因为观察未 # 需要量化操作。 返回 r r等价于 `torch.cat` 的操作 定义 cat(, x: 列表[张量], 暗淡: 整数 = 0) -> 张量: r = 火炬.(x, 维度=维度) r = .激活后处理(r) 返回 r r等价于 `relu(torch.add(x,y))` 的操作 def add_relu(self, x: Tensor, y: 张量) -> 张量: r = 火炬.添加(x, y) r = 火炬.神经网络.函数式.relu(r) r = .激活后处理(r) 返回 r r等效于 `torch.matmul(Tensor, Tensor)` 的操作 def 矩阵乘法(self, x: 张量, y: 张量) -> 张量: r = 火炬.矩阵乘法(x, y) r = 自身.激活后处理(r) 返回 r
[文档] FXFloatFunctional(火炬.神经网络.模块): r"""在 FX 图模式量化之前替换 FloatFunctional 模块的模块, 由于 activation_post_process 将直接插入顶层模块 有效的操作名称: - 添加 - 类别 - 乘 - 加 ReLU - 加标量 - 乘标量 "沉浸式翻译" 定义 前进(自己, x): 提升高度 运行时错误( "FloatFunctional 不打算使用“" + "‘forward’。请使用底层操作" ) r等效于 `torch.add(Tensor, Tensor)` 的操作 def add(self, x: 张量, y: 张量) -> 张量: r = 火炬.添加(x, y) 返回 r r"""操作等价于 ``torch.add(Tensor, float)``""" def 添加标量(self, x: 张量, y: 浮点数) -> 张量: r = 火炬.添加(x, y) 返回 r r等价于 `torch.mul(Tensor, Tensor)` 的操作 定义 (自身, x: 张量, y: 张量) -> 张量: r = PyTorch.(x, y) 返回 r r等价于 `torch.mul(Tensor, float)` 的操作 定义 mul_scalar(, x: 张量, y: 浮点数) -> 张量: r = PyTorch.(x, y) 返回 r r等效于 `torch.cat` 的操作 def cat(self, x: 列表[张量] 维度: 整型 = 0) -> 张量: r = 火炬.(x, =) 返回 r r等价于 `relu(torch.add(x,y))` 的操作 def add_relu(self, x: 张量, y: 张量) -> 张量: r = 火炬.添加(x, y) r = 火炬.神经网络.功能性.relu(r) 返回 r r等价于 `torch.matmul(Tensor, Tensor)` 的操作 def 矩阵乘法(self, x: 张量, y: 张量) -> 张量: r = 火炬.矩阵乘法(x, y) 返回 r
文档 Q 函数式(PyTorch.nn.模块): r"""量化操作的包装类。 该类的实例可以用作代替的 ``torch.ops.quantized`` 前缀。下面是示例用法。 .. 注意:: 此类不提供 ``forward`` 钩子。相反,您必须使用 基底函数之一(例如 ``add``)。 示例:: >>> q_add = QFunctional() >>> # xdoctest: +SKIP >>> a = torch.quantize_per_tensor(torch.tensor(3.0), 1.0, 0, torch.qint32) >>> b = torch.quantize_per_tensor(torch.tensor(4.0), 1.0, 0, torch.qint32) >>> q_add.add(a, b) # 等价于 ``torch.ops.quantized.add(a, b, 1.0, 0)`` 有效的操作名称: - add 加 ReLU 加标量 - 多乘标量 """ 定义 __init__() -> : 超级().__init__() self.scale = 1.0 self.零点 = 0 自我.激活后处理 = 火炬.神经网络.身份() 定义 保存到状态字典(, 目的地, 前缀, 保持变量): 超级()._保存到状态字典(目的地, 前缀, 保持变量) 目标[前缀 + 缩放] = 火炬.张量(自身.规模) 目的地[前缀 + 零点] = 火炬.张量(.零点) 定义 从状态字典加载( self, 状态字典, 前缀, 本地元数据, 严格, 缺少键, 预期之外的键, 错误信息, ): 自身.比例 = 浮点(state_dict.pop(prefix + "scale")) .零点 = 整数(状态字典.流行(前缀 + 零点)) 超级().从状态字典加载( 状态字典, 前缀, 本地元数据, 错误, 缺少键, 预期之外的键, 错误消息, ) def _get_name(self): return "Q 功能" def extra_repr(self): 返回 f"缩放="{self.缩放}零点={自身.零点}" 定义 前进(自己, x): 提升 运行时错误( "功能不打算使用“” + "请使用底层操作“” ) r"相当于 ``torch.ops.quantized.add`` 的操作" def 添加(自己, x: 张量, y: 张量) -> 张量: r = 操作.量化.添加(x, y, 缩放=自己.缩放, 零点=自我.零点) r = 自我.激活后处理(r) 返回 r r等价于 `torch.ops.quantized.add(Tensor, float)` 的操作 定义 添加标量(self, x: 张量, y: 浮点数) -> 张量: r = 操作.量化.添加标量(x, y) # 注意:此操作未观察到,因为观察尚未进行 # 此操作不需要,因为量化操作不需要 返回 r r等效于 `torch.ops.quantized.mul(Tensor, Tensor)` 的操作 def mul(self, x: 张量, y: 张量) -> 张量: r = 操作.量化.(x, y, 缩放=.规模, 零点=.零点) r = 自我.激活后处理(r) 返回 r r等效于 `torch.ops.quantized.mul(Tensor, float)` 的操作 def mul_scalar(self, x: 张量, y: 浮点数) -> 张量: r = 操作.量化.矩阵乘以标量(x, y) # 注意:此操作未观察到,因为观察未进行 # 需要用于量化操作的。 返回 r r"""与 ``torch.ops.quantized.cat`` 相等的操作""" def (自我, x: 列表[张量] dim: int = 0) -> 张量: r = 操作.量化.(x, 尺度=自身.尺度, 零点=.零点, 暗淡=暗淡) r = .激活后处理(r) 返回 r r等价于 `torch.ops.quantized.add_relu` 的操作 def add_relu(self, x: Tensor, y: 张量) -> 张量: r = 操作.量化.添加 ReLU(x, y, 缩放=自身.尺度, 零点=自身.零点) r = .激活后处理(r) 返回 r r等价于 `torch.ops.quantized.matmul(Tensor, Tensor)` 的操作 def 矩阵乘法(self, x: 张量, y: 张量) -> 张量: r = 操作.量化.矩阵乘法(x, y, 缩放=自身.尺度, 零点=自身.零点) # 注意:此操作不被观察,因为观察尚未进行 # 不需要为量化操作提供 返回 r @classmethod 定义 from_float(cls, mod, use_precomputed_fake_quant=错误): 断言 ( 类型(模块) == 浮点功能 ), "QFunctional.from_float 期望一个 FloatFunctional 实例" 缩放, 零点 = 模块.激活后处理.计算 q 参数() # 类型:忽略[运算符] 新模块 = Q 功能() 新模块.缩放 = 浮点数(缩放) 新模块.零点 = 整数(零点) 返回 新模块

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

查看 PyTorch 的全面开发者文档

查看文档

教程

为初学者和高级开发者提供深入教程

查看教程

资源

寻找开发资源,解答你的问题

查看资源