转换表示法

class TransformedRepresentation(transformation: Module, max_id: int | None = None, shape: int | Sequence[int] | None = None, base: str | Representation | type[Representation] | None = None, base_kwargs: Mapping[str, Any] | None = None, **kwargs)[源代码]

基础类:Representation

对基础表示进行的(可学习的)转换。

在以下示例中,我们创建了从固定随机游走编码特征的可训练变换中获得的表示。我们首先加载数据集,这里是Nations:

>>> from pykeen.datasets import get_dataset
>>> dataset = get_dataset(dataset="nations")

接下来,我们创建一个维度为32的随机游走位置编码:

>>> from pykeen.nn import init
>>> dim = 32
>>> initializer = init.RandomWalkPositionalEncoding(triples_factory=dataset.training, dim=dim+1)
We used dim+1 for the RWPE initializion as by default it doesn't return the first dimension of 0's
That is, in the default setup, dim = 33 would return a 32d vector

对于转换,我们使用一个简单的2层MLP

>>> from torch import nn
>>> hidden = 64
>>> mlp = nn.Sequential(
...     nn.Linear(in_features=dim, out_features=hidden),
...     nn.ReLU(),
...     nn.Linear(in_features=hidden, out_features=dim),
... )

最后,转换后的表示形式为

>>> from pykeen.nn import TransformedRepresentation
>>> r = TransformedRepresentation(
...     transformation=mlp,
...     base_kwargs=dict(max_id=dataset.num_entities, shape=(dim,), initializer=initializer, trainable=False),
... )

初始化表示。

Parameters:
  • transformation (nn.Module) – 转换

  • max_id (int | None) – 表示的数量。如果提供,必须与基础最大ID匹配

  • shape (OneOrSequence[int] | None) – 各个表示的形状。如果提供,必须与转换的输出形状匹配

  • base (HintOrType[Representation]) – 基础表示或其提示,参见 representation_resolver

  • base_kwargs (OptionalKwargs) – 用于实例化基础表示的关键字参数

  • kwargs – 传递给 Representation.__init__() 的额外基于关键字的参数。

Raises:

ValueError – 如果 max_id 或 shape 不匹配