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)
- 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)
- 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) 的张量。