美文网首页跨语言摘要
pytorch加载预训练好的词向量作为嵌入层

pytorch加载预训练好的词向量作为嵌入层

作者: 布口袋_天晴了 | 来源:发表于2019-11-15 14:34 被阅读0次
self.E = torch.nn.Embedding(len(d.entities), d1, padding_idx=0)
self.R = torch.nn.Embedding(len(d.relations), d2, padding_idx=0)
self.Embedding = torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx)

num_embeddings (int): 嵌入层词典大小
embedding_dim (int): 嵌入层向量大小
padding_idx (int, optional): 如果设置padding_idx,则表示这个位置处的向量值都是零向量。

# 初始化对象
self.E = torch.nn.Embedding(len(d.entities), d1, padding_idx=0)
self.R = torch.nn.Embedding(len(d.relations), d2, padding_idx=0)
dir = os.path.abspath(os.path.dirname(os.getcwd()))
data_dir = dir + "/data/%s" % kwargs["dataset"]
#将预训练好的关系/实体向量加载为np.array形式
E0 = np.array(self.init_norm_Vector(data_dir + '/entity2vec' + str(kwargs["embedding_dim"]) + '.init', kwargs["embedding_dim"]), dtype=np.float32)
R0 = np.array(self.init_norm_Vector(data_dir + '/relation2vec' + str(kwargs["embedding_dim"]) + '.init', kwargs["embedding_dim"]), dtype=np.float32)
#将预训练的向量赋值到关系/实体Embeding的变量中
self.E.weight.data.copy_(torch.from_numpy(E0))
self.R.weight.data.copy_(torch.from_numpy(R0))
#设置这个预训练的关系/实体向量不用反向梯度调参
self.E.weight.requires_grad = False
self.R.weight.requires_grad = False

1.初始化对象
2.将预训练好的关系/实体向量加载为np.array形式
3.将预训练的向量赋值到关系/实体Embeding的变量中
4.设置这个预训练的关系/实体向量不用反向梯度调参

相关文章

网友评论

    本文标题:pytorch加载预训练好的词向量作为嵌入层

    本文链接:https://www.haomeiwen.com/subject/atqsictx.html