ProjE交互
- class ProjEInteraction(embedding_dim: int = 50, inner_activation: str | ~torch.nn.modules.module.Module | type[~torch.nn.modules.module.Module] | None = None, inner_activation_kwargs: ~collections.abc.Mapping[str, ~typing.Any] | None = None, outer_activation: str | ~torch.nn.modules.module.Module | type[~torch.nn.modules.module.Module] | None = None, outer_activation_kwargs: ~collections.abc.Mapping[str, ~typing.Any] | None = None, bias_initializer: str | ~typing.Callable[[~torch.Tensor], ~torch.Tensor] | None = <function xavier_uniform_>, bias_initializer_kwargs: ~collections.abc.Mapping[str, ~typing.Any] | None = None, projection_initializer: str | ~typing.Callable[[~torch.Tensor], ~torch.Tensor] | None = <function xavier_uniform_>, projection_initializer_kwargs: ~collections.abc.Mapping[str, ~typing.Any] | None = None)[source]
基础类:
Interaction[Tensor,Tensor,Tensor]有状态的ProjE交互函数。
激活函数给出如下
\[g( f( \mathbf{d}_h \odot \mathbf{h} + \mathbf{d}_r \odot \mathbf{r} + \mathbf{b} )^T \mathbf{t} + b_p )\]其中 \(\mathbf{h}, \mathbf{r}, \mathbf{t} \in \mathbb{R}^d\) 是头实体、关系和尾实体的表示,\(\mathbf{d}_h, \mathbf{d}_r, \mathbf{b} \in \mathbb{R}^d\) 和 \(b_p \in \mathbb{R}\) 是全局参数,\(f, g\) 是激活函数。
它可以被解释为一个具有非常特殊权重矩阵稀疏模式的两层神经网络。论文还描述了第一个操作
\[\mathbf{y} = f(\mathbf{d}_h \odot \mathbf{h} + \mathbf{d}_r \odot \mathbf{r} + \mathbf{b} )\]作为组合操作和第二部分
\[g(\mathbf{y}^T \mathbf{t} + b_p)\]作为投影层。
注意
虽然原始论文描述了使用sigmoid或softmax作为最终激活函数,但此实现默认在最后一层不使用激活函数。这允许使用数值稳定的合并激活和损失实现,例如
torch.nn.BCEWithLogitsLoss(用于sigmoid),或torch.nn.CrossEntropyLoss(用于softmax)。初始化交互模块。
- Parameters:
embedding_dim (int) – 实体和关系的嵌入维度
inner_activation (HintOrType[nn.Module]) – 内部非线性激活函数,或其提示。默认为
nn.Tanh。 通过传递nn.Idenity来禁用。inner_activation_kwargs (OptionalKwargs) – 用于实例化内部激活函数的额外基于关键字的参数。
outer_activation (HintOrType[nn.Module]) – 外部非线性函数,或其提示。默认为
nn.Identity,即无激活函数。outer_activation_kwargs (OptionalKwargs) – 用于实例化外部激活函数的额外基于关键字的参数。
bias_initializer (提示[初始化器]) – 用于偏置的初始化器;默认为
pykeen.nn.init.xavier_uniform_()。bias_initializer_kwargs (OptionalKwargs) – 传递给偏置初始化器的额外基于关键字的参数。
projection_initializer (提示[初始化器]) – 用于投影的初始化器;默认为
pykeen.nn.init.xavier_uniform_()。projection_initializer_kwargs (OptionalKwargs) – 传递给投影初始化器的额外基于关键字的参数。
注意
参数对
(inner_activation, inner_activation_kwargs),(outer_activation, outer_activation_kwargs)用于class_resolver.contrib.torch.activation_resolver解析器的解释及其使用方法在 https://class-resolver.readthedocs.io/en/latest/中给出。
方法总结
forward(h, r, t)评估交互函数。
重置交互函数可能具有的参数。
方法文档