python词嵌入_PyTorch/Gensim-如何加载预先训练的单词嵌入

本文介绍了如何在PyTorch 0.4.0及以上版本以及0.3.1及更早版本中,使用`nn.Embedding.from_pretrained()`或自定义函数加载Gensim预先训练的词嵌入权重。提供了详细代码示例,适用于不同版本的PyTorch。
摘要由CSDN通过智能技术生成

我只想报告我的发现,关于装载一个根西姆嵌入Pythorch。Pythorch0.4.0和更新版本的解决方案:

在v0.4.0中有一个新函数^{},这使得加载嵌入非常方便。

以下是文档中的一个示例。>> # FloatTensor containing pretrained weights

>> weight = torch.FloatTensor([[1, 2.3, 3], [4, 5.1, 6.3]])

>> embedding = nn.Embedding.from_pretrained(weight)

>> # Get embeddings for index 1

>> input = torch.LongTensor([1])

>> embedding(input)

来自gensim的权重很容易通过以下方法获得:import gensim

model = gensim.models.KeyedVectors.load_word2vec_format('path/to/file')

weights = torch.FloatTensor(model.vectors) # formerly syn0, which is soon deprecatedPythorch版本0.3.1及更早版本的解决方案:

我使用的是0.3.1版本,而^{}在此版本中不可用。

因此,我创建了自己的from_pretrained,这样我也可以将它与0.3.1一起使用。

PyTorch版本的from_pretrained或更低版本的代码:def from_pretrained(embeddings, freeze=True):

assert embeddings.dim() == 2, \

'Embeddings parameter is expected to be 2-dimensional'

rows, cols = embeddings.shape

embedding = torch.nn.Embedding(num_embeddings=rows, embedding_dim=cols)

embedding.weight = torch.nn.Parameter(embeddings)

embedding.weight.requires_grad = not freeze

return embedding

嵌入可以像这样加载:embedding = from_pretrained(weights)

我希望这对某人有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值