转换表示法
- 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 不匹配