gluonts.mx.trainer.model_iteration_averaging 模块#

class gluonts.mx.trainer.model_iteration_averaging.Alpha_Suffix(epochs: int, alpha: float = 0.75, eta: float = 0)[source]#

基类: gluonts.mx.trainer.model_iteration_averaging.IterationAveragingStrategy

实现 Alpha Suffix 模型平均。

此方法基于论文“Making Gradient Descent Optimalfor Strongly Convex Stochastic Optimization” (https://arxiv.org/pdf/1109.5647.pdf)。

alpha_suffix: float#
update_average_trigger(metric: Optional[Any] = None, epoch: int = 0, **kwargs)[source]#
参数
  • metric – 触发平均的条件,在 Alpha Suffix 中未使用。

  • epoch – 开始平均的轮次。

class gluonts.mx.trainer.model_iteration_averaging.IterationAveragingStrategy(eta: float = 0)[source]#

基类: object

模型平均基于论文“Stochastic Gradient Descent for Non- smooth Optimization: Convergence Results and Optimal Averaging Schemes”, (http://proceedings.mlr.press/v28/shamir13.pdf),该方法实现了由 eta 参数化的多项式衰减平均。

当 eta = 0 时,相当于对所有迭代进行简单平均,权重相同。

apply(model: mxnet.gluon.block.HybridBlock) Optional[Dict][source]#
参数

model – 当前迭代的模型。

返回类型

平均后的模型,如果平均尚未开始则为 None。

average_counter: int#
averaged_model: Optional[Dict[str, mxnet.ndarray.ndarray.NDArray]]#
averaging_started: bool#
cached_model: Optional[Dict[str, mxnet.ndarray.ndarray.NDArray]]#
load_averaged_model(model: mxnet.gluon.block.HybridBlock)[source]#

在训练过程中验证/评估平均模型时,首先使用 load_averaged_model 加载平均模型并覆盖当前模型,进行评估,然后使用 load_cached_model 将当前模型加载回来。

参数

model – 平均模型加载到的模型。

load_cached_model(model: mxnet.gluon.block.HybridBlock)[source]#
参数

model – 缓存模型加载到的模型。

update_average(model: mxnet.gluon.block.HybridBlock)[source]#
参数

model – 用于更新平均值的模型。

update_average_trigger(metric: Optional[Any] = None, epoch: int = 0, **kwargs)[source]#
参数
  • metric – 触发平均的条件。

  • epoch – 开始平均的轮次。

class gluonts.mx.trainer.model_iteration_averaging.ModelIterationAveraging(avg_strategy: gluonts.mx.trainer.model_iteration_averaging.IterationAveragingStrategy)[source]#

基类: gluonts.mx.trainer.callback.Callback

实现基于迭代的模型平均策略的回调。

参数

avg_strategy – IterationAveragingStrategy,gluonts.mx.trainer.model_iteration_averaging 中的 NTA 或 Alpha_Suffix 之一

on_epoch_end(epoch_no: int, epoch_loss: float, training_network: mxnet.gluon.block.HybridBlock, trainer: mxnet.gluon.trainer.Trainer, best_epoch_info: Dict[str, Any], ctx: mxnet.context.Context) bool[source]#

每个 epoch 后调用的钩子。与 on_train_epoch_endon_validation_epoch_end 一样,它返回一个布尔值,指示训练是否应该继续。此钩子始终在 on_train_epoch_endon_validation_epoch_end 之后调用。无论这些钩子的返回值如何,都会调用此钩子。

参数
  • epoch_no – 当前 epoch(第一个 epoch 的 epoch_no = 0)。

  • epoch_loss – 如果提供了验证数据,则为上一个 epoch 中记录的验证损失;否则为训练损失。

  • training_network – 正在训练的网络。

  • trainer – 正在运行训练的训练器。

  • best_epoch_info – 关于最佳 epoch 的聚合信息。包含 params_pathepoch_noscore 键。如果提供了验证数据,score 是最佳验证损失;否则是最佳训练损失。

  • ctx – 使用的 MXNet 上下文。

返回

一个布尔值,指示训练是否应该继续。默认为 True

返回类型

布尔值

on_train_batch_end(training_network: mxnet.gluon.block.HybridBlock) bool[source]#

每个训练 batch 后调用的钩子。

参数

training_network – 正在训练的网络。

返回

一个布尔值,指示训练是否应该继续。默认为 True

返回类型

布尔值

on_train_end(training_network: mxnet.gluon.block.HybridBlock, temporary_dir: str, ctx: Optional[mxnet.context.Context] = None) None[source]#

训练完成后调用的钩子。这是最后一个被调用的钩子。

参数
  • training_network – 训练好的网络。

  • temporary_dir – 训练过程中记录模型参数的目录。

  • ctx – 使用的 MXNet 上下文。

on_validation_epoch_end(epoch_no: int, epoch_loss: float, training_network: mxnet.gluon.block.HybridBlock, trainer: mxnet.gluon.trainer.Trainer) bool[source]#

每个验证 epoch 后调用的钩子。与 on_train_epoch_end 类似,此方法返回一个布尔值,指示训练是否应该继续。请注意,在单个 epoch 内,它总是在 on_train_epoch_end 之后调用。如果 on_train_epoch_end 返回 False,则不会调用此方法。

参数
  • epoch_no – 当前 epoch(第一个 epoch 的 epoch_no = 0)。

  • epoch_loss – 上一个 epoch 中记录的验证损失。

  • training_network – 正在训练的网络。

  • trainer – 正在运行训练的训练器。

返回

一个布尔值,指示训练是否应该继续。默认为 True

返回类型

布尔值

on_validation_epoch_start(training_network: mxnet.gluon.block.HybridBlock) None[source]#

每个验证 epoch 前调用的钩子。如果在训练期间没有可用的验证数据,则永远不会调用此钩子。

参数

training_network – 正在训练的网络。

class gluonts.mx.trainer.model_iteration_averaging.NTA(epochs: int, n: int = 5, maximize: bool = False, last_n_trigger: bool = False, eta: float = 0, fallback_alpha: float = 0.05)[source]#

基类: gluonts.mx.trainer.model_iteration_averaging.IterationAveragingStrategy

基类: gluonts.mx.trainer.model_iteration_averaging.IterationAveragingStrategy

实现非单调触发 AvSGD (NTA)。

此方法基于论文“Regularizing and Optimizing LSTM Language Models”,(https://openreview.net/pdf?id=SyyGPP0TZ),并且在 Salesforce GitHub (https://github.com/salesforce/awd-lstm-lm/blob/master/main.py) 中提供了实现。请注意,它与 arxiv(和 gluonnlp)版本不匹配,后者在下方称为 NTA_V2。
参数
  • metric – 触发平均的条件。

  • update_average_trigger(metric: Optional[Any] = None, epoch: int = 0, **kwargs)[source]#

epoch – 开始平均的 epoch,在 NTA 中未使用