ConvE交互

class ConvEInteraction(input_channels: int | None = None, output_channels: int = 32, embedding_height: int | None = None, embedding_width: int | None = None, kernel_width: int = 3, kernel_height: int | None = None, input_dropout: float = 0.2, feature_map_dropout: float = 0.2, output_dropout: float = 0.3, embedding_dim: int = 200, apply_batch_normalization: bool = True)[来源]

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

有状态的ConvE交互函数。

ConvE 是一种基于 CNN 的方法。对于输入表示 \(\mathbf{h}, \mathbf{r}, \mathbf{t} \in \mathbb{R}^d\), 它首先将 \(\mathbf{h}\)\(\mathbf{r}\) 组合成一个矩阵 \(\mathbf{A} \in \mathbb{R}^{2 \times d}\), 其中 \(\mathbf{A}\) 的第一行表示 \(\mathbf{h}\),第二行表示 \(\mathbf{r}\)\(\mathbf{A}\) 被重塑为一个矩阵 \(\mathbf{B} \in \mathbb{R}^{m \times n}\), 其中前 \(m/2\) 行表示 \(\mathbf{h}\),剩下的 \(m/2\) 行表示 \(\mathbf{r}\)。 在卷积层中,一组 二维 卷积滤波器 \(\Omega = \{\omega_i \mid \omega_i \in \mathbb{R}^{r \times c}\}\) 被应用于 \(\mathbf{B}\), 以捕捉 \(\mathbf{h}\)\(\mathbf{r}\) 之间的交互。 生成的特征图被重塑并连接起来,以创建一个特征向量 \(\mathbf{v} \in \mathbb{R}^{|\Omega|rc}\)。 在下一步中,\(\mathbf{v}\) 通过线性变换映射到实体空间 \(\mathbf{W} \in \mathbb{R}^{|\Omega|rc \times d}\),即 \(\mathbf{e}_{h,r} = \mathbf{v}^{T} \mathbf{W}\)。 然后通过以下方式获得分数:

\[f(\mathbf{h}, \mathbf{r}, \mathbf{t}) = \mathbf{e}_{h,r} \mathbf{t}\]

由于交互模型可以分解为 \(f(\mathbf{h}, \mathbf{r}, \mathbf{t}) = \left\langle f'(\mathbf{h}, \mathbf{r}), \mathbf{t} \right\rangle\) 该模型特别设计用于1-N评分,即高效计算固定 \(h,r\) 和许多不同 \(t\)\((h,r,t)\) 的分数。

默认设置使用批量归一化。批量归一化可以归一化激活函数的输出,以确保神经网络的权重不会变得不平衡,并加速训练。然而,批量归一化并不是实现更稳健和有效训练的唯一方法[santurkar2018]。因此,我们添加了标志apply_batch_normalization来开启/关闭批量归一化(默认情况下是开启的)。

初始化交互模块。

Parameters:
  • input_channels (int | None) – 卷积操作的输入通道数。可以从其他参数推断出来,参见 _calculate_missing_shape_information()

  • output_channels (int) – 卷积操作的输入通道数

  • embedding_height (int | None) – 在重新调整连接的头和关系嵌入后的“图像”高度。可以从其他参数推断出来,参见 _calculate_missing_shape_information()

  • embedding_width (int | None) – 在重新调整连接的头和关系嵌入后的“图像”宽度。可以从其他参数推断出来,参见 _calculate_missing_shape_information()

  • kernel_width (int) – 卷积核的宽度

  • kernel_height (int | None) – 卷积核的高度。默认为 kernel_width

  • input_dropout (float) – 在卷积之前应用的dropout

  • feature_map_dropout (float) – 在卷积之后应用的 dropout

  • output_dropout (float) – 在线性投影后应用的dropout

  • embedding_dim (int) – 实体和关系的嵌入维度

  • apply_batch_normalization (bool) – 是否应用批量归一化

属性摘要

entity_shape

实体表示的符号形状

方法总结

forward(h, r, t)

评估交互函数。

属性文档

entity_shape: Sequence[str] = ('d', '')

实体表示的符号形状

方法文档

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

评估交互函数。

另请参阅

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

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

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

  • t (tuple[Tensor, Tensor]) – 两个形状为 (*batch_dims, d)batch_dims 的向量 尾部表示,包括尾部实体嵌入和偏差。

Returns:

形状: batch_dims 分数。

Return type:

Tensor