CompGCN¶
- class unike.module.model.CompGCN(*args: Any, **kwargs: Any)[源代码]¶
CompGCN[VSNT20] 发表于2020年,这是一种在图卷积网络中整合多关系信息的新框架,它利用知识图谱嵌入技术中的各种组合操作,将实体和关系共同嵌入到图中。正三元组的评分函数的值越大越好,如果想获得更详细的信息请访问 CompGCN。
例子:
from unike.module.model import CompGCN from unike.module.loss import CompGCNLoss from unike.module.strategy import CompGCNSampling from unike.config import Trainer, GraphTester # define the model compgcn = CompGCN( ent_tol = dataloader.get_ent_tol(), rel_tol = dataloader.get_rel_tol(), dim = 100 ) # define the loss function model = CompGCNSampling( model = compgcn, loss = CompGCNLoss(model = compgcn), ent_tol = dataloader.get_ent_tol() ) # test the model tester = GraphTester(model = compgcn, data_loader = dataloader, use_gpu = True, device = 'cuda:0', prediction = "tail") # train the model trainer = Trainer(model = model, data_loader = dataloader.train_dataloader(), epochs = 2000, lr = 0.0001, use_gpu = True, device = 'cuda:0', tester = tester, test = True, valid_interval = 50, log_interval = 50, save_interval = 50, save_path = '../../checkpoint/compgcn.pth' ) trainer.run()
- GraphCov: CompGCNCov¶
CompGCNCov
- __call__(*args: Any, **kwargs: Any) Any¶
Call self as a function.
- __init__(ent_tol: int, rel_tol: int, dim: int, opn: str = 'mult', fet_drop: float = 0.2, hid_drop: float = 0.3, margin: float = 40.0, decoder_model: str = 'ConvE')[源代码]¶
创建 RGCN 对象。
- 参数:
ent_tol (int) – 实体的个数
rel_tol (int) – 关系的个数
dim (int) – 实体和关系嵌入向量的维度
opn (str) – 组成运算符:’mult’、’sub’、’corr’
fet_drop (float) – 用于 ‘ConvE’ 解码器,用于卷积特征的 dropout
hid_drop (float) – 用于 ‘ConvE’ 解码器,用于隐藏层的 dropout
margin (float) – 用于 ‘TransE’ 解码器,gamma。
decoder_model (str) – 用什么得分函数作为解码器: ‘ConvE’、’DistMult’、’TransE’
- static __new__(cls, *args: Any, **kwargs: Any) Any¶
- __repr__() str¶
Return repr(self).
- __weakref__¶
list of weak references to the object (if defined)
- bias: torch.nn.parameter.Parameter¶
最后计算得分时的偏置
- bn0: torch.nn.BatchNorm2d¶
用于 ‘ConvE’ 解码器,头实体嵌入向量和关系嵌入向量的 BatchNorm
- bn1: torch.nn.Conv2d¶
用于 ‘ConvE’ 解码器,卷积特征的 BatchNorm
- bn2: torch.nn.BatchNorm1d¶
用于 ‘ConvE’ 解码器,隐藏层的 BatchNorm
- concat(ent_embed: torch.Tensor, rel_embed: torch.Tensor) torch.Tensor[源代码]¶
ConvE 作为解码器时,用于拼接头实体嵌入向量和关系嵌入向量。
- 参数:
ent_embed (torch.Tensor) – 头实体的嵌入向量
rel_embed (torch.Tensor) – 关系的嵌入向量
- 返回:
ConvE 解码器的输入特征
- 返回类型:
torch.Tensor
- conv1: torch.nn.Conv2d¶
用于 ‘ConvE’ 解码器,卷积层
- conve(sub_emb: torch.Tensor, rel_emb: torch.Tensor, all_ent: torch.Tensor) torch.Tensor[源代码]¶
计算 ConvE 作为解码器时三元组的得分。
- 参数:
sub_emb (torch.Tensor) – 头实体的嵌入向量
rel_emb (torch.Tensor) – 关系的嵌入向量
all_ent (torch.Tensor) – 全部实体的嵌入向量
- 返回:
三元组的得分
- 返回类型:
torch.Tensor
- decoder_model: str¶
用什么得分函数作为解码器: ‘ConvE’、’DistMult’
- dim: int¶
实体和关系嵌入向量的维度
- distmult(head_emb: torch.Tensor, rela_emb: torch.Tensor, all_ent: torch.Tensor) torch.Tensor[源代码]¶
计算 DistMult 作为解码器时三元组的得分。
- 参数:
sub_emb (torch.Tensor) – 头实体的嵌入向量
rel_emb (torch.Tensor) – 关系的嵌入向量
all_ent (torch.Tensor) – 全部实体的嵌入向量
- 返回:
三元组的得分
- 返回类型:
torch.Tensor
- ent_emb: torch.nn.parameter.Parameter¶
根据实体个数,创建的实体嵌入
- ent_tol: int¶
实体的种类
- fc: torch.nn.Linear¶
用于 ‘ConvE’ 解码器,隐藏层层
- fet_drop: torch.nn.Dropout¶
用于 ‘ConvE’ 解码器,卷积特征的 Dropout
- forward(graph: dgl.DGLGraph, relation: torch.Tensor, norm: torch.Tensor, triples: torch.Tensor) torch.Tensor[源代码]¶
定义每次调用时执行的计算。
torch.nn.Module子类必须重写torch.nn.Module.forward()。- 参数:
graph (dgl.DGLGraph) – 子图
relation (torch.Tensor) – 子图的关系
norm (torch.Tensor) – 关系的归一化系数
triples (torch.Tensor) – 三元组
- 返回:
三元组的得分
- 返回类型:
torch.Tensor
- get_parameters(mode: str = 'numpy', param_dict: dict[str, Any] | None = None) dict[str, numpy.ndarray] | dict[str, list] | dict[str, torch.Tensor]¶
获得模型权重。
- 参数:
mode – 模型保存的格式,可以选择
numpy、list和Tensor。param_dict (dict[str, Any] | None) – 可以选择从哪里获得模型权重。
- 返回:
模型权重字典。
- 返回类型:
dict[str, numpy.ndarray] | dict[str, list] | dict[str, torch.Tensor]
- hid_drop: torch.nn.Dropout¶
用于 ‘ConvE’ 解码器,隐藏层的 Dropout
- load_checkpoint(path: str)¶
加载模型权重。
- 参数:
path (str) – 模型保存的路径
- load_parameters(path: str)¶
加载模型权重。
- 参数:
path (str) – 模型保存的路径
- margin: torch.nn.parameter.Parameter¶
用于 TransE 得分函数
- opn: str¶
组成运算符:’mult’、’sub’、’corr’
- pi_const: torch.nn.parameter.Parameter¶
常数 pi
- predict(data: dict[str, Union[dgl.DGLGraph, torch.Tensor]], mode: str) torch.Tensor[源代码]¶
CompGCN 的推理方法。
- 参数:
data (dict[str, Union[dgl.DGLGraph, torch.Tensor]]) – 数据。
mode (str) – 在 CompGCN 时,无用,只为了保证推理函数形式一致
- 返回:
三元组的得分
- 返回类型:
torch.Tensor
- rel_emb: torch.nn.parameter.Parameter¶
根据关系个数,创建的关系嵌入
- rel_tol: int¶
关系的种类
- save_checkpoint(path: str)¶
保存模型权重。
- 参数:
path (str) – 模型保存的路径
- save_parameters(path: str)¶
用 json 格式保存模型权重。
- 参数:
path (str) – 模型保存的路径
- set_parameters(parameters: dict[str, Any])¶
加载模型权重。
- 参数:
parameters (dict[str, Any]) – 模型权重字典。
- transe(head_emb: torch.Tensor, rela_emb: torch.Tensor, all_ent: torch.Tensor) torch.Tensor[源代码]¶
计算 TransE 作为解码器时三元组的得分。
- 参数:
sub_emb (torch.Tensor) – 头实体的嵌入向量
rel_emb (torch.Tensor) – 关系的嵌入向量
all_ent (torch.Tensor) – 全部实体的嵌入向量
- 返回:
三元组的得分
- 返回类型:
torch.Tensor
- tri2emb(triples: torch.Tensor, negs: torch.Tensor | None = None, mode: str = 'single') tuple[torch.Tensor, torch.Tensor, torch.Tensor]¶
返回三元组对应的嵌入向量。
- 参数:
triples (str) – 正确的三元组
negs (torch.Tensor) – 负三元组类别
mode – 模式
- 返回:
头实体、关系和尾实体的嵌入向量
- 返回类型:
tuple[torch.Tensor, torch.Tensor, torch.Tensor]
- zero_const: torch.nn.parameter.Parameter¶
常数 0