当前位置: 首页 > 面试题库 >

PyTorch / Gensim-如何加载预训练的单词嵌入

卢权
2023-03-14
问题内容

我想将使用gensim进行预训练的word2vec嵌入加载到PyTorch嵌入层中。

所以我的问题是,如何让gensim将嵌入权重加载到PyTorch嵌入层中。

提前致谢!


问题答案:

我只是想报告我的发现,有关如何将gensim嵌入PyTorch。

v0.4.0那里有一个新功能from_pretrained(),使嵌入嵌入变得非常舒适。这是文档中的示例。

import torch
import torch.nn as nn

# 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 deprecated

如@Guglie所指出:在较新的gensim版本中,权重可以通过以下方式获得model.wv

weights = model.wv
  • PyTorch版本0.3.1及更早版本的解决方案:

我正在使用版本0.3.1from_pretrained()但此版本不可用。

因此,我创建了自己的应用程序,from_pretrained因此也可以将其与使用0.3.1

from_pretrained PyTorch版本0.3.1或更低版本的代码:

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)

我希望这对某人有帮助。



 类似资料:
  • 本文向大家介绍python PyTorch预训练示例,包括了python PyTorch预训练示例的使用技巧和注意事项,需要的朋友参考一下 前言 最近使用PyTorch感觉妙不可言,有种当初使用Keras的快感,而且速度还不慢。各种设计直接简洁,方便研究,比tensorflow的臃肿好多了。今天让我们来谈谈PyTorch的预训练,主要是自己写代码的经验以及论坛PyTorch Forums上的一些回

  • 本文向大家介绍Pytorch加载部分预训练模型的参数实例,包括了Pytorch加载部分预训练模型的参数实例的使用技巧和注意事项,需要的朋友参考一下 前言 自从从深度学习框架caffe转到Pytorch之后,感觉Pytorch的优点妙不可言,各种设计简洁,方便研究网络结构修改,容易上手,比TensorFlow的臃肿好多了。对于深度学习的初学者,Pytorch值得推荐。今天主要主要谈谈Pytorch是

  • 本文向大家介绍基于pytorch 预训练的词向量用法详解,包括了基于pytorch 预训练的词向量用法详解的使用技巧和注意事项,需要的朋友参考一下 如何在pytorch中使用word2vec训练好的词向量 这个方法是在pytorch中将词向量和词对应起来的一个方法. 一般情况下,如果我们直接使用下面的这种: 这种情况下, 因为没有指定训练好的词向量, 所以embedding会帮咱们生成一个随机的词

  • 在本章中,我们将了解单词嵌入模型—。Word2vec模型用于在相关模型组的帮助下生成单词嵌入。Word2vec模型使用纯C代码实现,并且手动计算梯度。 PyTorch中word2vec模型的实现在以下步骤中解释 - 第1步 在以下库中实现单词嵌入,如下所述 - 第2步 使用名为word2vec的类实现单词嵌入的Skip Gram模型。它包括:,,,类型的属性。 第3步 实现main方法,以正确的方

  • 本文向大家介绍pytorch 使用加载训练好的模型做inference,包括了pytorch 使用加载训练好的模型做inference的使用技巧和注意事项,需要的朋友参考一下 前提: 模型参数和结构是分别保存的 1、 构建模型(# load model graph) model = MODEL() 2、加载模型参数(# load model state_dict) (解决RuntimeError:

  • 在本章中,我们将重点学习如何从Scratch创建一个Convent。这推断了使用 torch 创建相应的修道院或样本神经网络。 第1步 使用各自的参数创建必要的类,参数包括具有随机值的权重。 第2步 使用函数创建函数的向前模式。 第3步 创建如下所述的培训和预测模型 -