时间:2021-05-22
如何在pytorch中使用word2vec训练好的词向量
torch.nn.Embedding()这个方法是在pytorch中将词向量和词对应起来的一个方法. 一般情况下,如果我们直接使用下面的这种:
self.embedding = torch.nn.Embedding(num_embeddings=vocab_size, embedding_dim=embeding_dim)num_embeddings=vocab_size 表示词汇量的大小embedding_dim=embeding_dim 表示词向量的维度这种情况下, 因为没有指定训练好的词向量, 所以embedding会帮咱们生成一个随机的词向量(但是在我刚刚测试的一个情感二分类问题中, 我发现好像用不用预训练的词向量, 结果差不多, 不过不排除是因为当时使用的模型比较简单, 导致一些特征根本就没提取出来).
如果我想使用word2vec预训练好的词向量该怎么做呢?
其实很简单,pytorch已经给我们提供好了接口
self.embedding.weight.data.copy_(torch.from_numpy(embeding_vector))self.embedding.weight.requires_grad = False上面两句代码的意思, 第一句就是导入词向量, 第二句表示的是在反向传播的时候, 不要对这些词向量进行求导更新. 我还看到有人会在优化器那里使用这样的代码:
# emotion_net是我定义的模型optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, emotion_net.parameters()), lr=1e-3, betas=(0.9, 0.99))大概意思也是为了保证词向量不会被反向传播而更新, 具体有没有用我就不清楚了.
其实我感觉大家比较在意的其实应该是embeding_vector的形式, 下面我就介绍一下embeding_vector的形式
为了讲述方便, 这里定义出下面几个矩阵
embeding_vector:表示词向量,每行是一个词的词向量,有多少行就说明有多少单词
word_list:表示单词列表,里面就是单词
word_to_index:这个矩阵将word_list中的单词和embeding_vector中的位置对应起来
其实embeding_vector是一个numpy矩阵, 当然你看到了, 实际输入到pytorch的时候, 是需要转换成tensor类型的. 这个矩阵是什么样子的呢? 其中这个矩阵是 [vocab_size×embeding_dim] [vocab\_size \times embeding\_dim][vocab_size×embeding_dim] 的形式. 其中一共包含vocab_size vocab\_sizevocab_size 个单词, 每个单词的维度是 embed_dim embed\_dimembed_dim, 我们把这样一个矩阵输入就行了.
之后, 我们要做的其实就是将 word_to_index word\_to\_indexword_to_index 这个矩阵搞出来, 这里的单词转下标的矩阵, 就是联系 embeding_vector embeding\_vectorembeding_vector 和 word_list word\_listword_list 这两个矩阵的中间者. 我们在输入到torch.nn.Embedding中之前, 需要先通过 word_to_index word\_to\_indexword_to_index 将单词转换成 embeding_vector embeding\_vectorembeding_vector 的下标就可以了.
以上这篇基于pytorch 预训练的词向量用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
pytorch预训练层的使用方法将其他地方训练好的网络,用到新的网络里面加载预训练网络1.原先已经训练好一个网络AutoEncoder_FC()2.首先加载该网
接触pytorch一天,发现pytorch上手的确比TensorFlow更快。可以更方便地实现用预训练的网络提特征。以下是提取一张jpg图像的特征的程序:#-*
最近使用pytorch时,需要用到一个预训练好的人脸识别模型提取人脸ID特征,想到很多人都在用用vgg-face,但是vgg-face没有pytorch的模型,
在实践中经常会遇到这样的情况:1、用简单的模型预训练参数2、把预训练的参数导入复杂的模型后训练复杂的模型这时就产生一个问题:如何加载预训练的参数。下面就是我的总
pytorch中我们有时候可能需要设定某些变量是参与训练的,这时候就需要查看哪些是可训练参数,以确定这些设置是成功的。pytorch中model.paramet