超参数优化

class HpoPipelineResult(study: Study, objective: Objective)[来源]

HPO管道结果的容器。

Parameters:
  • 学习 (Study)

  • 目标 (Objective)

objective: Objective

目标类,包含预设超参数和需要优化的参数信息

replicate_best_pipeline(*, directory: str | Path, replicates: int, move_to_cpu: bool = False, save_replicates: bool = True, save_training: bool = False) None[source]

在最佳配置上运行管道,但这次是在“测试”集上而不是“评估”集上。

Parameters:
  • 目录 (str | Path) – 输出目录

  • replicates (int) – 模型重新训练的次数

  • move_to_cpu (bool) – 模型是否应该移回CPU?仅在GPU上训练时相关。

  • save_replicates (bool) – 是否应保存复制的工件?

  • save_training (bool) – 是否应该保存训练三元组?

Raises:

ValueError – 如果在最佳管道的config中提供了"use_testing_data"

Return type:

save_to_directory(directory: str | Path, **kwargs) None[source]

将研究结果转储到指定目录。

Parameters:

目录 (str | Path)

Return type:

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

将结果保存到FTP服务器中的目录。

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

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

save_to_s3(directory: str, bucket: str, s3=None) None[来源]

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

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

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

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

Return type:

study: Study

optuna 研究对象

hpo_pipeline_from_path(path: str | Path, **kwargs) HpoPipelineResult[源代码]

从给定路径的配置运行HPO研究。

Parameters:

路径 (str | Path)

Return type:

HpoPipelineResult

hpo_pipeline_from_config(config: Mapping[str, Any], **kwargs) HpoPipelineResult[source]

使用格式正确的配置字典运行HPO管道。

Parameters:

config (Mapping[str, Any])

Return type:

HpoPipelineResult

hpo_pipeline(*, dataset: None | str | Dataset | type[Dataset] = None, dataset_kwargs: Mapping[str, Any] | None = None, training: str | CoreTriplesFactory | None = None, testing: str | CoreTriplesFactory | None = None, validation: str | CoreTriplesFactory | None = None, evaluation_entity_whitelist: Collection[str] | None = None, evaluation_relation_whitelist: Collection[str] | None = None, model: str | type[Model], model_kwargs: Mapping[str, Any] | None = None, model_kwargs_ranges: Mapping[str, Any] | None = None, loss: str | type[Loss] | None = None, loss_kwargs: Mapping[str, Any] | None = None, loss_kwargs_ranges: Mapping[str, Any] | None = None, regularizer: str | type[Regularizer] | None = None, regularizer_kwargs: Mapping[str, Any] | None = None, regularizer_kwargs_ranges: Mapping[str, Any] | None = None, optimizer: str | type[Optimizer] | None = None, optimizer_kwargs: Mapping[str, Any] | None = None, optimizer_kwargs_ranges: Mapping[str, Any] | None = None, lr_scheduler: str | type[LRScheduler] | None = None, lr_scheduler_kwargs: Mapping[str, Any] | None = None, lr_scheduler_kwargs_ranges: Mapping[str, Any] | None = None, training_loop: str | type[TrainingLoop] | None = None, training_loop_kwargs: Mapping[str, Any] | None = None, negative_sampler: str | type[NegativeSampler] | None = None, negative_sampler_kwargs: Mapping[str, Any] | None = None, negative_sampler_kwargs_ranges: Mapping[str, Any] | None = None, epochs: int | None = None, training_kwargs: Mapping[str, Any] | None = None, training_kwargs_ranges: Mapping[str, Any] | None = None, stopper: str | type[Stopper] | None = None, stopper_kwargs: Mapping[str, Any] | None = None, evaluator: str | type[Evaluator] | None = None, evaluator_kwargs: Mapping[str, Any] | None = None, evaluation_kwargs: Mapping[str, Any] | None = None, metric: str | None = None, filter_validation_when_testing: bool = True, result_tracker: str | type[ResultTracker] | None = None, result_tracker_kwargs: Mapping[str, Any] | None = None, device: str | device | None = None, storage: str | BaseStorage | None = None, sampler: str | type[BaseSampler] | None = None, sampler_kwargs: Mapping[str, Any] | None = None, pruner: str | type[BasePruner] | None = None, pruner_kwargs: Mapping[str, Any] | None = None, study_name: str | None = None, direction: str | None = None, load_if_exists: bool = False, n_trials: int | None = None, timeout: int | None = None, gc_after_trial: bool | None = None, n_jobs: int | None = None, save_model_directory: str | None = None) HpoPipelineResult[source]

在给定的数据集上训练模型。

Parameters:
  • dataset (None | str | Dataset | type[Dataset]) – 数据集的名称(pykeen.datasets.dataset_resolver 的键)或 pykeen.datasets.Dataset 实例。或者,可以指定训练三元组工厂(training)、测试 三元组工厂(testing)和验证三元组工厂(validation;可选)。

  • dataset_kwargs (Mapping[str, Any] | None) – 实例化时传递给数据集的关键字参数

  • 训练 (str | CoreTriplesFactory | None) – 一个包含训练实例的三元组工厂,或者如果未指定数据集,则为训练文件的路径

  • 测试 (str | CoreTriplesFactory | None) – 如果未指定数据集,则为包含测试实例的三元组工厂或测试文件的路径

  • 验证 (str | CoreTriplesFactory | None) – 如果未指定数据集,则使用验证实例的三元组工厂或验证文件的路径

  • evaluation_entity_whitelist (Collection[str] | None) – 可选的评估限制,仅包含这些实体的三元组。如果下游任务仅对某些实体感兴趣,但与其他实体的关系模式提高了实体嵌入质量,则此选项非常有用。传递给 pykeen.pipeline.pipeline()

  • evaluation_relation_whitelist (Collection[str] | None) – 可选的评估限制,仅包含这些关系的三元组。如果下游任务仅对某些关系感兴趣,但与其他关系的关系模式提高了实体嵌入质量,则非常有用。传递给 pykeen.pipeline.pipeline()

  • model (str | type[Model]) – 传递给pykeen.pipeline.pipeline()的模型名称或模型类

  • model_kwargs (Mapping[str, Any] | None) – 在实例化时传递给模型类的关键字参数

  • model_kwargs_ranges (Mapping[str, Any] | None) – 用于优化模型超参数的策略,以覆盖默认值

  • loss (str | type[Loss] | None) – 传递给pykeen.pipeline.pipeline()的损失名称或损失类

  • loss_kwargs (Mapping[str, Any] | None) – 在实例化时传递给损失函数的关键字参数

  • loss_kwargs_ranges (Mapping[str, Any] | None) – 用于优化损失超参数的策略,以覆盖默认值

  • regularizer (str | type[Regularizer] | None) – 传递给pykeen.pipeline.pipeline()的正则化器名称或正则化器类

  • regularizer_kwargs (Mapping[str, Any] | None) – 在实例化时传递给正则化器的关键字参数

  • regularizer_kwargs_ranges (Mapping[str, Any] | None) – 用于优化正则化器超参数的策略,以覆盖默认值

  • optimizer (str | type[Optimizer] | None) – 优化器的名称或优化器类。默认为 torch.optim.Adagrad

  • optimizer_kwargs (Mapping[str, Any] | None) – 在实例化时传递给优化器的关键字参数

  • optimizer_kwargs_ranges (Mapping[str, Any] | None) – 用于优化优化器超参数的策略,以覆盖默认值

  • lr_scheduler (str | type[LRScheduler] | None) – lr_scheduler的名称或lr_scheduler类。

  • lr_scheduler_kwargs (Mapping[str, Any] | None) – 在实例化时传递给 lr_scheduler 的关键字参数

  • lr_scheduler_kwargs_ranges (Mapping[str, Any] | None) – 用于优化 lr_schedulers 超参数的策略,以覆盖默认值

  • training_loop (str | type[TrainingLoop] | None) – 训练方法的名称('slcwa''lcwa')或传递给 pykeen.pipeline.pipeline() 的训练循环类

  • training_loop_kwargs (Mapping[str, Any] | None) – 在实例化时传递给训练循环的额外基于关键字的参数。

  • negative_sampler (str | type[NegativeSampler] | None) – 负采样器的名称('basic''bernoulli')或要传递给 pykeen.pipeline.pipeline() 的负采样器类。仅在训练时使用 sLCWA 时允许。

  • negative_sampler_kwargs (Mapping[str, Any] | None) – 在实例化时传递给负采样器类的关键字参数

  • negative_sampler_kwargs_ranges (Mapping[str, Any] | None) – 用于优化负采样器超参数的策略,以覆盖默认值

  • epochs (int | None) – 用于设置 training_kwargs 字典中 num_epochs 键的快捷方式。

  • training_kwargs (Mapping[str, Any] | None) – 在调用时传递给训练循环的train函数的关键字参数

  • training_kwargs_ranges (Mapping[str, Any] | None) – 用于优化训练循环超参数的策略,以覆盖默认值。如果启用了早停,则不能为批量大小指定范围。

  • stopper (str | type[Stopper] | None) – 使用何种停止方式。默认为不停止,可以设置为‘early’。

  • stopper_kwargs (Mapping[str, Any] | None) – 在实例化时传递给stopper的关键字参数。

  • evaluator (str | type[Evaluator] | None) – 评估器的名称或评估器类。默认为 pykeen.evaluation.RankBasedEvaluator

  • evaluator_kwargs (Mapping[str, Any] | None) – 在实例化时传递给评估器的关键字参数

  • evaluation_kwargs (Mapping[str, Any] | None) – 在调用时传递给评估器的evaluate函数的关键字参数

  • filter_validation_when_testing (bool) – 如果为真,在测试数据集上进行评估时,验证三元组将被添加到已知正三元组集合中,这些三元组在执行过滤评估时会被过滤掉,遵循[bordes2013]描述的方法。默认为真。

  • result_tracker (str | type[ResultTracker] | None) – ResultsTracker类或名称

  • result_tracker_kwargs (Mapping[str, Any] | None) – 在实例化时传递给结果跟踪器的关键字参数

  • metric (str | None) – 要优化的指标。默认为平均倒数排名。

  • n_jobs (int | None) – 并行作业的数量。如果此参数设置为 -1,则数量设置为CPU核心数。如果为None,默认为1。

  • save_model_directory (str | None) – 如果提供,每个试验的最终模型将保存在此目录下。

  • storage (str | BaseStorage | None) – 研究的存储,参见 optuna.study.create_study()

  • sampler (str | type[BaseSampler] | None) – 采样器或其提示,参见 optuna.study.create_study()

  • sampler_kwargs (Mapping[str, Any] | None) – 采样器的额外基于关键字的参数

  • pruner (str | type[BasePruner] | None) – 修剪器或其提示,参见 optuna.study.create_study()

  • pruner_kwargs (Mapping[str, Any] | None) – 用于修剪器的额外基于关键字的参数

  • device (str | device | None) – 使用的设备。

  • study_name (str | None) – 研究的名称,参见 optuna.study.create_study()

  • direction (str | None) – 优化的方向。由于默认的指标是平均倒数排名,默认的方向是 maximize。 参见 optuna.study.create_study()

  • load_if_exists (bool) – 如果研究已经存在,是否加载它,参见 optuna.study.create_study()

  • n_trials (int | None) – 试验次数,参见 optuna.study.Study.optimize()

  • timeout (int | None) – 超时时间,参见 optuna.study.Study.optimize()

  • gc_after_trial (bool | None) – 试验后的垃圾回收,参见 optuna.study.Study.optimize()

  • n_jobs – 任务的数量,参见 optuna.study.Study.optimize()。默认为1。

Returns:

优化结果

Raises:

ValueError – 如果启用了早停,但epoch的数量也需要优化。

Return type:

HpoPipelineResult