【问题标题】:How PyTorch model layer weights get initialized implicitly? [duplicate]PyTorch 模型层权重如何被隐式初始化? [复制]
【发布时间】:2021-04-12 20:03:48
【问题描述】:

我基本上用 PyTorch 定义了一个带有 Conv2D 和线性层的模型,并用一个样本数据集对其进行了训练。该模型似乎运行并收敛。但我想知道我没有明确初始化模型层权重(正常或 Xavier)。这是否意味着当我在每个 epoch 训练之前调用 model.train() 时,默认情况下层权重会随机初始化?如果是这样,我怎样才能显式更改初始化的类型?

【问题讨论】:

标签: python deep-learning pytorch


【解决方案1】:

初始化的类型取决于层。您可以从reset_parameters 方法或文档中检查它。

对于线性层和卷积层,都是 He 初始化 (torch.nn.init.kaiming_uniform_)。

在文档中提到

这些值从U(−sqrt(k),sqrt(k))初始化。

对于嵌入层,它是正常的初始化。 (在文档中提到 N(0,1))。


您可以更改How to initialize weights in PyTorch? 中提到的初始化类型。

conv1 = torch.nn.Conv2d(...)
torch.nn.init.xavier_uniform(conv1.weight)

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 2019-10-30
    • 1970-01-01
    • 2018-07-09
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    相关资源
    最近更新 更多