gluonts.mx.util 模块#

class gluonts.mx.util.HybridContext(net: mxnet.gluon.block.HybridBlock, hybridize: bool, data_batch: Optional[List[mxnet.ndarray.ndarray.NDArray]] = None, **kwargs)[source]#

基类: object

一个上下文管理器,确保 MXNet 网络在混合/非混合模式下运行。

参数
  • net – 在封闭上下文中必须修改其混合模式的网络。

  • hybridize – 一个布尔标志,指示是否应设置混合模式。

  • kwargs – 一个可选参数字典,传递给封闭的 HybridBlock 网络的 hybridize() 调用。

gluonts.mx.util.assert_shape(x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], expected_shape: Tuple[int, ...])[source]#

如果模式是 mx.nd,则断言期望的形状。

参数
  • x – 输入张量

  • expected_shape – 期望的形状

gluonts.mx.util.copy_parameters(net_source: mxnet.gluon.block.Block, net_dest: mxnet.gluon.block.Block, ignore_extra: bool = False, allow_missing: bool = False) None[source]#

将参数从一个网络复制到另一个网络。

参数
  • net_source – 输入网络。

  • net_dest – 输出网络。

  • ignore_extra – 是否忽略源中存在但在目标中不存在的参数。

  • allow_missing – 是否允许目标中存在源中不存在的额外参数。

gluonts.mx.util.cumsum(F, x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], exclusive: bool = False, reverse: bool = False) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

通过乘以下三角全一矩阵计算最后一轴上的累积和

\[\begin{split}\operatorname{cumsum}(x) = \begin{cases} \operatorname{ltr\_ones} \times x & \text{for cumulative sum}\\ x \times \operatorname{ltr\_ones} & \text{for cumulative sum in the reverse order} \end{cases}\end{split}\]

也支持 exclusive 标志以零开始累积和。例如,如果 \(x = [a, b, c]\),我们有

\[\begin{split}\operatorname{cumsum}(x) = \begin{cases} [a, a + b, a + b + c] & \text{if }\mathit{reverse = False, exclusive = False}\\ [0, a, a + b] & \text{if }\mathit{reverse = False, exclusive = True}\\ [a + b + c, b + c, c] & \text{if }\mathit{reverse = True, exclusive = False}\\ [b + c, c, 0] & \text{if }\mathit{reverse = True, exclusive = True}\\ \end{cases}\end{split}\]
参数
  • F – 要使用的函数空间。

  • x – 形状为 \((..., n)\) 的张量。

  • exclusive – 如果为 True,累积和从零开始。

  • reverse – 如果为 True,累积和沿相反方向执行。

返回

一个具有相同形状且最后一轴上具有累积和的修改后的张量。

返回类型

张量

gluonts.mx.util.export_repr_block(rb: mxnet.gluon.block.HybridBlock, model_dir: pathlib.Path, model_name: str, epoch: int = 0) None[source]#

序列化一个可表示的 Gluon block。

参数
  • rb – 要导出的 block。

  • model_dir – 模型将保存的路径。

  • model_name – 标识模型的名称。

  • epoch – epoch 数,与 model_name 一起标识模型参数。

gluonts.mx.util.export_symb_block(hb: mxnet.gluon.block.HybridBlock, model_dir: pathlib.Path, model_name: str, epoch: int = 0) None[source]#

序列化一个混合后的 Gluon HybridBlock

参数
  • hb – 要导出的 block。

  • model_dir – 模型将保存的路径。

  • model_name – 标识模型的名称。

  • epoch – epoch 数,与 model_name 一起标识模型参数。

model_dir – 模型保存的路径。
gluonts.mx.util.get_hybrid_forward_input_names(hybrid_block_type: Type[mxnet.gluon.block.HybridBlock])[source]#

将 Gluon HybridBlock 转换为 SymbolBlock。按照 Gluon API 的方式,这通过对传入的 HybridBlock 调用 hybridize(),进行一次前向传播(使用提供的数据批量),以及输入 block 的 export()import() 调用的组合来实现。

请注意,MXNet 在使用此方法时存在问题

参数
  • hb – 要转换的 Gluon HybridBlock

  • data_batch – 在 hybridize() 调用后用于前向传播的数据。

返回

由 MXNet 符号图支持的生成的 Gluon block。

返回类型

mx.gluon.SymbolBlock

gluonts.mx.util.import_repr_block(model_dir: pathlib.Path, model_name: str, epoch: int = 0) mxnet.gluon.block.HybridBlock[source]#

反序列化一个可表示的 Gluon block。

参数
  • model_dir – 模型保存的路径。

  • model_name – 标识模型的名称。

  • epoch – epoch 数,与 model_name 一起标识模型参数。

返回

反序列化的 block。

返回类型

mx.gluon.HybridBlock

gluonts.mx.util.import_symb_block(num_inputs: int, model_dir: pathlib.Path, model_name: str, epoch: int = 0) mxnet.gluon.block.SymbolBlock[source]#

将混合后的 Gluon HybridBlock 反序列化为 SymbolBlock

参数
  • num_inputs – 序列化 block 的输入数量。

  • model_dir – 模型保存的路径。

  • model_name – 标识模型的名称。

  • epoch – epoch 数,与 model_name 一起标识模型参数。

返回

反序列化的 block。

返回类型

mx.gluon.SymbolBlock

model_dir – 模型保存的路径。

gluonts.mx.util.make_nd_diag(F, x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], d: int) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

参数
  • F – 要使用的函数空间。

  • 给定对角线,创建一个对角张量。

  • F – 要使用的函数空间。

返回

x – 要使用的对角线,形状为 \((..., d)\)

返回类型

张量

dx 的最后一个维度。

一个形状为 \((..., d, d)\) 的张量 y,使得 \(y[..., i, i] = x[..., i]\)

gluonts.mx.util.mx_switch(F, *args, **kwargs) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

用于 mxnet 的 switch 语句。

mx_switch((A, x), (B, y), z)

参数
  • F – 要使用的函数空间。

  • 对应于

  • if A -> x elif B -> y else -> z

返回

args – 参数。

返回类型

张量

kwargs – 关键字参数

具有相应 switch 条目的张量。

gluonts.mx.util.weighted_average(F, x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], weights: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None, axis: Optional[int] = None, include_zeros_in_denominator=False) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

参数
  • F – 要使用的函数空间。

  • 计算给定张量在给定轴上的加权平均值,对权重为零的值进行掩码,

  • 这意味着您将得到 0 * 0 = 0,而不是 nan * 0 = nan

  • F – 要使用的函数空间。

  • x – 必须计算平均值的输入张量。

返回

weights – 权重张量,形状与 x 相同。

返回类型

张量