Transformer交互

class TransformerInteraction(input_dim: int = 512, num_layers: int = 2, num_heads: int = 8, dropout: float = 0.1, dim_feedforward: int = 2048, position_initializer: str | ~typing.Callable[[~torch.Tensor], ~torch.Tensor] | type[~typing.Callable[[~torch.Tensor], ~torch.Tensor]] | None = <function xavier_normal_>)[source]

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

基于Transformer的交互,如[galkin2020]所述。

此交互函数主要用于处理在超关系语句中找到的额外限定符对,但也可用于普通的链接预测。

它创建了一个包含头部和关系表示的\(2\)元素序列, 应用可学习的绝对位置编码, 应用Transformer编码器, 随后沿序列维度执行求和池化 和最终的线性投影, 然后通过与尾部实体表示的点积来确定分数。

它的交互函数由以下给出

\[\textit{Linear}(\textit{SumPooling}(\textit{Transformer}( [\mathbf{h} + \mathbf{pe}[0]; \mathbf{r} + \mathbf{pe}[1]] )))^T \mathbf{t}\]

由于对连接的头和关系表示应用了计算成本高的操作,并且在此编码和尾表示之间应用了廉价的点积,因此这种交互函数特别适合对相同头-关系组合的不同尾实体进行\(1:n\)评估。

初始化模块。

Parameters:
  • input_dim (int) – >0 输入维度。

  • num_layers (int) – >0 Transformer层的数量,参见 torch.nn.TransformerEncoder

  • num_heads (int) – >0 每个transformer编码器层中的自注意力头数, 参见 nn.TransformerEncoderLayer

  • dropout (float) – 每个变压器编码器层的dropout率,参见 torch.nn.TransformerEncoderLayer

  • dim_feedforward (int) – 变压器编码器层的前馈层的隐藏维度, 参见 torch.nn.TransformerEncoderLayer

  • position_initializer (HintOrType[Initializer]) – 用于位置嵌入的初始化器。

方法总结

forward(h, r, t)

评估交互函数。

方法文档

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