• pytorch中如何使用预训练词向量


    不涉及具体代码,只是记录一下自己的疑惑。

    我们知道对于在pytorch中,我们通过构建一个词向量矩阵对象。这个时候对象矩阵是随机初始化的,然后我们的输入是单词的数值表达,也就是一些索引。那么我们会根据索引,赋予每个单词独一无二的一个词向量表达。在其后的神经网络训练过程中,每个单词对应独一无二的索引,从而对应自己的词向量,词向量会随着迭代进行更新。

    上面讲的这个是使用pytorch词向量的随机初始化的流程。

    但是我们如果使用预训练的词向量怎么办呢?很多例子中,直接就给个代码是类似这样的:

    self.word_embeds = nn.Embedding(vocab_size, embedding_dim)
    pretrained_weight = np.array(pretrained_weight)
    self.embed.weight.data.copy_(torch.from_numpy(pretrained_weight))
    

    先是进行一个对象初始化,然后加载预训练词向量,然后把预训练词向量copy进去。

    我们知道预训练词向量肯定也是一个词向量矩阵对象,这里是通过单词获取词向量权重。我们要做的就是做到类似pytorch自带的那种权重初始化,得到一个单词-索引-权重对应的关系。预训练对象得到的是单词-权重。我们要得到的是索引-权重。

    理解了上面这些话,看那些代码就比较容易了。这里还会涉及到一个处理未登录词的问题,就是预训练词向量中未出现的单词我们怎么处理,一般是置为零。

  • 相关阅读:
    VMware安装虚拟机(Ubuntu)
    鼠标拖拽事件
    css层叠样式表
    html--form表单常用操作
    python学习之HTML-table标签
    python之web前端day01
    字符串各种操作,关于字符串的内置函数
    正则中匹配次数的问题
    re模块
    Github网站打不开的问题
  • 原文地址:https://www.cnblogs.com/lzida9223/p/10536183.html
Copyright © 2020-2023  润新知