TuckERInteraction

class TuckERInteraction(embedding_dim: int = 200, relation_dim: int | None = None, head_dropout: float = 0.3, relation_dropout: float = 0.4, head_relation_dropout: float = 0.5, apply_batch_normalization: bool = True, core_initializer: str | Callable[[Tensor], Tensor] | None = None, core_initializer_kwargs: Mapping[str, Any] | None = None)[source]

基础类: Interaction[Tensor, Tensor, Tensor]

有状态的TuckER交互函数。

交互函数的灵感来源于Tucker张量分解。 基本形式如下

\[\mathbf{Z} \times_1 \mathbf{h} \times_2 \mathbf{r} \times_3 \mathbf{t} = \sum_{1 \leq i, k \leq d_e, 1 \leq j \leq d_r} \mathbf{Z}_{i, j, k} \cdot \mathbf{h}_{i} \cdot \mathbf{r}_{j} \cdot \mathbf{t}_{k}\]

其中 \(\mathbf{h}, \mathbf{t} \in \mathbb{R}^{d_e}\) 是头和尾实体表示, \(\mathbf{r} \in \mathbb{R}^{d_r}\) 是关系表示,并且 \(\mathbf{Z} \in \mathbb{R}^{d_e \times d_r \times d_e}\) 是一个全局参数,而 \(\times_k\) 表示沿着第 \(k\) 维的张量积。

实现进一步在以下位置添加了BatchNorm1dDropout层:

\[\textit{DO}_{hr}(\textit{BN}_{hr}( \textit{DO}_h(\textit{BN}_h(\mathbf{h})) \times_1 \textit{DO}_r(\mathbf{Z} \times_2 \mathbf{r}) ) \times_3 \mathbf{t}\]

实现a的复杂度为\(\mathcal{O}(d_e^2 d_r)\),并且需要\(\mathcal{O}(d_e^2 d_r)\)全局可训练参数。

初始化Tucker交互函数。

Parameters:
  • embedding_dim (int) – 实体嵌入维度。

  • relation_dim (int | None) – 关系嵌入维度。默认为 embedding_dim

  • head_dropout (float) – 应用于头部表示的丢弃率。

  • relation_dropout (float) – 应用于关系表示的丢弃率。

  • head_relation_dropout (float) – 应用于组合头和关系表示的丢弃率。

  • apply_batch_normalization (bool) – 是否在头部表示以及头部和关系的组合上使用批量归一化。

  • core_initializer (提示[初始化器]) – 核心张量的初始化器,或其提示。 默认为 default_core_initializer

  • core_initializer_kwargs (OptionalKwargs) – 初始化器的额外基于关键字的参数。 默认为 default_core_initializer_kwargs

注意

参数对 (core_initializer, core_initializer_kwargs) 用于 pykeen.nn.init.initializer_resolver

解析器的解释及其使用方法在 https://class-resolver.readthedocs.io/en/latest/中给出。

属性摘要

default_core_initializer_kwargs

方法总结

default_core_initializer(tensor[, a, b, ...])

用从均匀分布中抽取的值填充输入张量。

forward(h, r, t)

评估交互函数。

reset_parameters()

重置交互函数可能具有的参数。

属性文档

default_core_initializer_kwargs: Mapping[str, Any] = {'a': -1.0, 'b': 1.0}

方法文档

static default_core_initializer(tensor: Tensor, a: float = 0.0, b: float = 1.0, generator: Generator | None = None) Tensor

用从均匀分布中抽取的值填充输入张量。

\(\mathcal{U}(a, b)\).

Args:

tensor: 一个n维的 torch.Tensor a: 均匀分布的下界 b: 均匀分布的上界 generator: 用于采样的torch生成器(默认值:None)

Examples:
>>> w = torch.empty(3, 5)
>>> nn.init.uniform_(w)
Parameters:
Return type:

Tensor

forward(h: Tensor, r: Tensor, t: Tensor) Tensor[来源]

评估交互函数。

另请参阅

Interaction.forward 提供了关于交互函数通用批处理形式的详细描述。

Parameters:
  • h (Tensor) – 形状: (*batch_dims, d) 头部表示。

  • r (Tensor) – 形状: (*batch_dims, d) 关系表示。

  • t (Tensor) – 形状: (*batch_dims, d) 尾部表示。

Returns:

形状: batch_dims 分数。

Return type:

Tensor

reset_parameters()[来源]

重置交互函数可能具有的参数。