PyTorch 模型层权重如何被隐式初始化? [复制]
Posted
技术标签:
【中文标题】PyTorch 模型层权重如何被隐式初始化? [复制]【英文标题】:How PyTorch model layer weights get initialized implicitly? [duplicate] 【发布时间】:2021-04-12 20:03:48 【问题描述】:我基本上用 PyTorch 定义了一个带有 Conv2D 和线性层的模型,并用一个样本数据集对其进行了训练。该模型似乎运行并收敛。但我想知道我没有明确初始化模型层权重(正常或 Xavier)。这是否意味着当我在每个 epoch 训练之前调用 model.train() 时,默认情况下层权重会随机初始化?如果是这样,我怎样才能显式更改初始化的类型?
【问题讨论】:
这能回答你的问题吗? In PyTorch how are layer weights and biases initialized by default? 【参考方案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)
【讨论】:
以上是关于PyTorch 模型层权重如何被隐式初始化? [复制]的主要内容,如果未能解决你的问题,请参考以下文章