gpt4 book ai didi

python - Pytorch中嵌入层权重的不同初始化方法

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:17 25 4
gpt4 key购买 nike

在 Pytorch 1.0 中似乎有两种使用均匀分布初始化嵌入层的方法。

例如你有一个嵌入层:

self.in_embed = nn.Embedding(n_vocab, n_embed)

并且您想使用均匀分布来初始化它的权重。完成此操作的第一种方法是:

self.in_embed.weight.data.uniform_(-1, 1)

另一个是:

nn.init.uniform_(self.in_embed.weight, -1.0, 1.0)

我的问题是:第一种和第二种初始化形式有什么区别。这两种方法做同样的事情吗?

最佳答案

都是一样的

torch.manual_seed(3)
emb1 = nn.Embedding(5,5)
emb1.weight.data.uniform_(-1, 1)

torch.manual_seed(3)
emb2 = nn.Embedding(5,5)
nn.init.uniform_(emb2.weight, -1.0, 1.0)

assert torch.sum(torch.abs(emb1.weight.data - emb2.weight.data)).numpy() == 0

每个张量都有一个 uniform_ 方法,该方法使用均匀分布的值对其进行初始化。此外,nn.init 模块有一个方法 uniform_,它接受一个张量并用均匀分布的值初始化它。两者都是一样的,第一个是使用成员函数,第二个是使用通用实用函数。

关于python - Pytorch中嵌入层权重的不同初始化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55276504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com