gluonts.mx.model.transformer.layers 模块#

class gluonts.mx.model.transformer.layers.InputLayer(model_size: int = 64, **kwargs)[source]#

继承自: mxnet.gluon.block.HybridBlock

使用单层 MPL 将输入向量转换为 model_size,即 (batch_size, time_length, input_dim) -> (batch_size, time_length, model_size)

hybrid_forward(F, data: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], *args)[source]#

重写此 Block 以构建符号图。

参数
  • x (SymbolNDArray) – 第一个输入张量。

  • *args (list of Symbollist of NDArray) – 其他输入张量。

class gluonts.mx.model.transformer.layers.LayerNormalization(scale_init: str = 'ones', shift_init: str = 'zeros', eps: float = 1e-06, **kwargs)[source]#

继承自: mxnet.gluon.block.HybridBlock

实现 [BKH16] 中提出的层归一化。

hybrid_forward(F, data: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

对数据的隐藏单元进行如下归一化

data = scale * (data - mean) / sqrt(var + eps) + shift

归一化在输入数据的最后一个维度上执行。

参数

data – 要归一化的数据,形状为 (d0, …, dn, num_hidden)

返回

归一化的输入,形状为

返回类型

(d0, …, dn, num_hidden)

class gluonts.mx.model.transformer.layers.MultiHeadAttention(att_dim_in: int = 32, heads: int = 8, att_dim_out: int = 32, dropout: float = 0.0, **kwargs)[source]#

继承自: gluonts.mx.model.transformer.layers.MultiHeadAttentionBase

针对与键/值独立的查询的多头注意力层。

参数
  • att_dim_in – 注意力维度(隐藏单元数量)

  • heads – 注意力头数量

  • att_dim_out – 输出维度(输出单元数量)

  • dropout – 注意力分数上的 dropout 率

hybrid_forward(F, queries: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], memory: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], mask: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

计算给定记忆张量的查询的多头注意力。如果提供了序列长度,则它们将用于屏蔽注意力分数。遮罩张量也可用于屏蔽注意力分数。返回形状为 (batch_size, max_length, att_dim_out) 的张量。

参数
  • queries – 查询张量,形状为 (batch_size, query_max_length, att_dim_in)

  • memory – 要关注的记忆张量,形状为 (batch_size, memory_max_length, att_dim_in)

  • mask – 可选的用于屏蔽注意力分数的张量

返回类型

形状为 (batch_size, query_seq_len, att_dim_out) 的张量

class gluonts.mx.model.transformer.layers.MultiHeadAttentionBase(att_dim_in: int = 32, heads: int = 8, att_dim_out: int = 32, dropout: float = 0.0, **kwargs)[source]#

继承自: mxnet.gluon.block.HybridBlock

多头注意力的基类。

参数
  • att_dim_in – 注意力维度(隐藏单元数量)

  • heads – 注意力头数量

  • att_dim_out – 输出维度(输出单元数量)

  • dropout – 注意力分数上的 dropout 率

class gluonts.mx.model.transformer.layers.MultiHeadSelfAttention(att_dim_in: int = 32, heads: int = 8, att_dim_out: int = 32, dropout: float = 0.0, **kwargs)[source]#

继承自: gluonts.mx.model.transformer.layers.MultiHeadAttentionBase

多头自注意力。输入的独立线性投影用作注意力的查询、键和值。

参数
  • att_dim_in – 注意力维度(隐藏单元数量)

  • heads – 注意力头数量

  • att_dim_out – 输出维度(输出单元数量)

  • dropout – 注意力分数上的 dropout 率

hybrid_forward(F, inputs: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], mask: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None, cache: Optional[Dict[str, Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]]]] = None) Tuple[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Optional[Dict]][source]#

计算对一组输入的注意力,这些输入用作查询、键和值。如果提供了序列长度,它们将用于屏蔽注意力分数。也可以使用先前计算的输入的缓存。

参数
  • inputs – 输入数据,形状为 (batch_size, max_length, att_dim_in)

  • mask – 可选的用于屏蔽注意力分数的张量

  • cache – 包含先前计算的键和值的可选字典

返回

形状为 (batch_size, max_length, att_dim_out) 的张量

返回类型

张量

class gluonts.mx.model.transformer.layers.TransformerFeedForward(inner_dim: int = 32, out_dim: int = 32, act_type: str = 'softrelu', dropout: float = 0.0, **kwargs)[source]#

继承自: mxnet.gluon.block.HybridBlock

带有激活的位置前馈网络。

\[activation(XW_1 + b_1)W_2 + b_2\]

\(W_1\): (batch_size, d, inner_dim) \(W_2\): (batch_size, inner_dim, out_dim)

hybrid_forward(F, x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], *args) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

带有激活的位置前馈网络。

参数

x – 形状为 (batch_size, d, in_dim) 的张量

返回类型

形状为 (batch_size, d1, out_dim) 的张量

class gluonts.mx.model.transformer.layers.TransformerProcessBlock(sequence: str, dropout: float, **kwargs)[source]#

继承自: mxnet.gluon.block.HybridBlock

用于对层输入执行预处理/后处理的块。

处理步骤由 sequence 参数确定,该参数可以包含以下三种操作之一: n: 层归一化 r: 残差连接 d: dropout

hybrid_forward(F, data: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], prev: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

对数据应用处理序列,可选择包含先前的输入。

参数
  • data – 输入数据,形状为:(batch_size, length, num_hidden)

  • prev – 先前数据,形状为 (batch_size, length, num_hidden)

返回类型

处理后的数据,形状为 (batch_size, length, num_hidden)。

gluonts.mx.model.transformer.layers.combine_heads(F, x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], dim_per_head: int, heads: int) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#
参数
  • x – 形状为 (batch_size * heads, time_length, dim_per_head) 的张量

  • dim_per_head – 每个头的维度

  • heads – 头数量

返回类型

形状为 (batch_size, time_length, dim) 的张量

gluonts.mx.model.transformer.layers.dot_attention(F, queries: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], keys: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], values: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], mask: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None, dropout: float = 0.0) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#
参数
  • queries – 注意力查询,形状为 (n, lq, d)

  • keys – 注意力键,形状为 (n, lk, d)

  • values – 注意力值,形状为 (n, lk, dv)

  • mask – 可选的遮罩张量

  • dropout – Dropout 率

返回类型

每个查询的“上下文”向量,形状为 (n, lq, dv)

gluonts.mx.model.transformer.layers.split_heads(F, x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], dim_per_head: int, heads: int) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

返回一个张量,其头维度折叠到批次维度中,最后一个维度除以头数量。

参数
  • x – 形状为 (batch_size, time_length, dim) 的张量。

  • dim_per_head – 每个头的维度

  • heads – 头数量

返回类型

形状为 (batch_size * heads, time_length, dim_per_head) 的张量。