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.设置这个预训练的关系/实体向量不用反向梯度调参
网友评论