zoukankan      html  css  js  c++  java
  • 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自带的那种权重初始化,得到一个单词-索引-权重对应的关系。预训练对象得到的是单词-权重。我们要得到的是索引-权重。

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

  • 相关阅读:
    自定义 ListView
    linux IO重定向
    Facebook开源C++组件库Folly
    在vi按了ctrl+s后
    让Erlang服务器后台运行
    mysql innodb 性能相关参数
    linux 网卡驱动升级
    kernel panic
    32位Linux下使用2G以上大文件的几个相关宏的关系
    CentOS安装erlang
  • 原文地址:https://www.cnblogs.com/lzida9223/p/10536183.html
Copyright © 2011-2022 走看看