PipelineResult

class PipelineResult(random_seed: int, model: ~pykeen.models.base.Model, training: ~pykeen.triples.triples_factory.CoreTriplesFactory, training_loop: ~pykeen.training.training_loop.TrainingLoop, losses: list[float], metric_results: ~pykeen.evaluation.evaluator.MetricResults, train_seconds: float, evaluate_seconds: float, stopper: ~pykeen.stoppers.stopper.Stopper | None = None, configuration: ~collections.abc.Mapping[str, ~typing.Any] = <factory>, metadata: ~collections.abc.MutableMapping[str, ~typing.Any] = <factory>, version: str = <factory>, git_hash: str = <factory>)[source]

基础:Result

一个包含运行pykeen.pipeline.pipeline()结果的数据类。

属性摘要

METADATA_FILE_NAME

MODEL_FILE_NAME

RESULT_FILE_NAME

TRAINING_TRIPLES_FILE_NAME

stopper

早期停止器

title

实验的标题。

方法总结

get_metric(key)

从指标结果对象中获取给定的指标。

plot(**kwargs)

绘制所有图表。

plot_early_stopping(**kwargs)

绘制早停期间的评估结果。

plot_er(**kwargs)

在2D中绘制简化的实体和关系向量。

plot_losses(**kwargs)

绘制每个时期的损失。

save_model(路径)

使用torch.save()将训练好的模型保存到指定路径。

save_to_directory(directory, *[, ...])

保存给定目录中的所有工件。

save_to_ftp(directory, ftp)

将所有工件保存到FTP服务器中的指定目录。

save_to_s3(directory, bucket[, s3])

将所有工件保存到S3存储桶中的指定目录。

属性文档

Parameters:
METADATA_FILE_NAME: ClassVar[str] = 'metadata.json'
MODEL_FILE_NAME: ClassVar[str] = 'trained_model.pkl'
RESULT_FILE_NAME: ClassVar[str] = 'results.json'
TRAINING_TRIPLES_FILE_NAME: ClassVar[str] = 'training_triples'
stopper: Stopper | None = None

早期停止器

title

实验的标题。

方法文档

get_metric(key: str) float[source]

从指标结果对象中获取给定的指标。

Parameters:

key (str)

Return type:

float

plot(**kwargs)[源代码]

绘制所有图表。

Parameters:

kwargs – 传递给 pykeen.pipeline_plot.plot() 的关键字参数

Returns:

plot_early_stopping(**kwargs)[source]

绘制早停期间的评估结果。

Parameters:

kwargs – 传递给 pykeen.pipeline.plot_utils.plot_early_stopping() 的关键字参数

Returns:

plot_er(**kwargs)[源代码]

在2D中绘制简化的实体和关系向量。

Parameters:

kwargs – 传递给 pykeen.pipeline.plot_utils.plot_er() 的关键字参数

Returns:

警告

在同一图表上绘制关系和实体仅对像TransE这样的平移距离模型有意义。

plot_losses(**kwargs)[source]

绘制每个时期的损失。

Parameters:

kwargs – 传递给pykeen.pipeline.plot_utils.plot_losses()的关键字参数。

Returns:

save_model(path: str | Path) None[source]

使用torch.save()将训练好的模型保存到指定路径。

Parameters:

path (str | Path) – 模型保存的路径。应该有一个适合pickle的扩展名,比如 *.pkl*.pickle

Return type:

模型中包含用于训练的三元组工厂。

save_to_directory(directory: str | Path, *, save_metadata: bool = True, save_replicates: bool = True, save_training: bool = True, **_kwargs) None[source]

保存给定目录中的所有工件。

序列化格式如下所示

directory/
    results.json
    metadata.json
    trained_model.pkl
    training_triples/

除了第一个组件外,其他组件都是可选的,并且可以禁用,例如在超参数调优期间节省磁盘空间。trained_model.pkl 是通过 torch.save() 保存的完整模型,因此可以通过 torch.load() 加载,参见 torch 的序列化文档training_triples 包含训练三元组工厂,包括标签到 ID 的映射(如果使用)。它已通过 pykeen.triples.CoreTriplesFactory.to_path_binary() 保存,并且可以通过 pykeen.triples.CoreTriplesFactory.from_path_binary() 重新加载。

Parameters:
  • 目录 (str | Path) – 目录路径。如果必要,将创建包括所有父目录的路径

  • save_metadata (bool) – 是否保存元数据,参见 PipelineResult.metadata

  • save_replicates (bool) – # TODO: 重命名参数? 是否保存训练好的模型,参见 PipelineResult.save_model()

  • save_training (bool) – 是否保存训练三元组工厂

  • _kwargs – 额外的基于关键字的参数,这些参数被忽略

Return type:

save_to_ftp(directory: str, ftp: FTP) None[来源]

将所有工件保存到FTP服务器中的指定目录。

Parameters:
  • 目录 (str) – FTP服务器上保存的目录

  • ftp (FTP) – 连接到FTP服务器

Return type:

以下代码将训练一个模型并使用Python内置的ftplib.FTP将其上传到FTP:

import ftplib
from pykeen.pipeline import pipeline

directory = 'test/test'
pipeline_result = pipeline(
    model='TransE',
    dataset='Kinships',
)
with ftplib.FTP(host='0.0.0.0', user='user', passwd='12345') as ftp:
    pipeline_result.save_to_ftp(directory, ftp)

如果你想在自己的本地服务器上尝试这个,可以基于Giampaolo Rodola的优秀库pyftpdlib中的示例运行这段代码。

import os
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

authorizer = DummyAuthorizer()
authorizer.add_user("user", "12345", homedir=os.path.expanduser('~/ftp'), perm="elradfmwMT")

handler = FTPHandler
handler.authorizer = authorizer

address = '0.0.0.0', 21
server = FTPServer(address, handler)
server.serve_forever()
save_to_s3(directory: str, bucket: str, s3=None) None[source]

将所有工件保存到S3存储桶中的指定目录。

Parameters:
  • 目录 (str) – S3 存储桶中的目录

  • bucket (str) – S3存储桶的名称

  • s3 – 来自 boto3.client() 的客户端,如果已经实例化

Return type:

注意

需要设置~/.aws/credentials文件。阅读:https://realpython.com/python-boto3-aws-s3/

以下代码将训练一个模型并使用boto3将其上传到S3:

import time
from pykeen.pipeline import pipeline
pipeline_result = pipeline(
    dataset='Kinships',
    model='TransE',
)
directory = f'tests/{time.strftime("%Y-%m-%d-%H%M%S")}'
bucket = 'pykeen'
pipeline_result.save_to_s3(directory, bucket=bucket)