超参数优化
- 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]
在最佳配置上运行管道,但这次是在“测试”集上而不是“评估”集上。
- hpo_pipeline_from_path(path: str | Path, **kwargs) HpoPipelineResult[源代码]
从给定路径的配置运行HPO研究。
- Parameters:
- Return type:
- hpo_pipeline_from_config(config: Mapping[str, Any], **kwargs) HpoPipelineResult[source]
使用格式正确的配置字典运行HPO管道。
- Parameters:
- Return type:
- 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_ranges (Mapping[str, Any] | None) – 用于优化模型超参数的策略,以覆盖默认值
loss (str | type[Loss] | None) – 传递给
pykeen.pipeline.pipeline()的损失名称或损失类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()pruner (str | type[BasePruner] | None) – 修剪器或其提示,参见
optuna.study.create_study()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: