Shortcuts

torch.nn.utils.weight_norm

torch.nn.utils.weight_norm(module, name='weight', dim=0)[源代码]

对给定模块中的参数应用权重归一化。

w=gvv\mathbf{w} = g \dfrac{\mathbf{v}}{\|\mathbf{v}\|}

权重归一化是一种重新参数化的方法,它将权重张量的幅度与其方向解耦。这会替换由name指定的参数(例如'weight')为两个参数:一个指定幅度(例如'weight_g'),另一个指定方向(例如'weight_v')。权重归一化通过一个钩子实现,该钩子在每次forward()调用之前根据幅度和方向重新计算权重张量。

默认情况下,使用 dim=0,范数是独立地为每个输出通道/平面计算的。要计算整个权重张量的范数,请使用 dim=None

参见 https://arxiv.org/abs/1602.07868

警告

此函数已弃用。请使用torch.nn.utils.parametrizations.weight_norm() 该函数使用现代参数化API。新的weight_norm与从旧的weight_norm生成的state_dict兼容。

迁移指南:

Parameters
  • 模块 (模块) – 包含的模块

  • 名称 (str, 可选) – 权重参数的名称

  • dim (int, 可选) – 计算范数的维度

Returns

带有权重归一化钩子的原始模块

Return type

T_模块

示例:

>>> m = weight_norm(nn.Linear(20, 40), name='weight')
>>> m
Linear(in_features=20, out_features=40, bias=True)
>>> m.weight_g.size()
torch.Size([40, 1])
>>> m.weight_v.size()
torch.Size([40, 20])
优云智算