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\) 维的张量积。
实现进一步在以下位置添加了
BatchNorm1d和Dropout层:\[\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(tensor[, a, b, ...])用从均匀分布中抽取的值填充输入张量。
forward(h, r, t)评估交互函数。
重置交互函数可能具有的参数。
属性文档
方法文档
- 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)