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)评估交互函数。
方法文档