gluonts.mx.block.feature 模块#
- class gluonts.mx.block.feature.FeatureAssembler(T: int, use_static_cat: bool = False, use_static_real: bool = False, use_dynamic_cat: bool = False, use_dynamic_real: bool = False, embed_static: typing.Optional[gluonts.mx.block.feature.FeatureEmbedder] = None, embed_dynamic: typing.Optional[gluonts.mx.block.feature.FeatureEmbedder] = None, dtype: typing.Type = <class 'numpy.float32'>, **kwargs)[source]#
- 基类: - mxnet.gluon.block.HybridBlock- 将特征组装成 MXNet 张量。输入特征基于以下标准进行区分: - 静态(与时间无关)特征 对比 动态(即与时间有关)特征 
- 类别特征 对比 实数值特征。 
 - 动态特征的形状为 (N, T, C),静态特征的形状为 (N, C),其中: - N 是处理批次中的元素数量, 
- T 是时间维度, 
- C 是特征数量。 
 - 如果使用了多种特征类型, - FeatureAssembler将假定所有传入参数的 N 和 T 维度相同。- 类别特征可以选择性地使用训练过的嵌入层进行嵌入,通过嵌套的 - FeatureEmbedder组件实现。- >>> embed_static = FeatureEmbedder( ... cardinalities=[2], ... embedding_dims=[3], ... prefix='embed_static_', ... ) >>> embed_dynamic = FeatureEmbedder( ... cardinalities=[5, 5], ... embedding_dims=[6, 9], ... prefix='embed_dynamic_', ... ) - 上面的代码片段中有四个 - nn.Embedding层,分别对应一个静态类别特征和两个动态类别特征。这些层的 (input_dim, output_dim) 分别是 (2, 3)、(5, 6) 和 (5, 9)。创建的 assemble_feature 实例将不会处理实数值特征。- FeatureAssembler实例将使用哪些特征类型的子集由相应的构造函数参数确定。这里有一个只使用实数值特征来构建特征汇编器的例子。- >>> N, T = 50, 168 >>> assemble_feature = FeatureAssembler( ... T=T, ... # use_static_cat=True, ... # use_static_real=False, ... # use_dynamic_cat=True, ... # use_dynamic_real=False, ... embed_static=embed_static, ... embed_dynamic=embed_dynamic ... ) - 调用 - FeatureAssembler的 __call__、forward 或 hybrid_forward 方法时,我们总是必须传递完整的特征集。缺失的特征用具有适当形状的零张量表示。- 例如, - >>> import mxnet as mx >>> feat_static_cat = mx.nd.random.uniform(0, 2, shape=(N, 1)).floor() >>> feat_dynamic_cat = mx.nd.random.uniform( 0, 5, shape=(N, 168, 2) ).floor() >>> feat_static_real = mx.nd.zeros(shape=(N, 1,)) # empty feature >>> feat_dynamic_real = mx.nd.zeros(shape=(N, T, 1,)) # empty feature - 在将嵌入器参数初始化为一并实例化一些随机的 static_cat 和 dynamic_cat 向量后, - >>> assemble_feature.collect_params().initialize(mx.initializer.One()) - 可以按如下方式进行前向传播。 - >>> assembled_feature = assemble_feature( feat_static_cat, feat_static_real, feat_dynamic_cat, feat_dynamic_real ) >>> assembled_feature.shape (50, 168, 20) >>> - 然而,上述调用中 static_cat 和 dynamic_cat 的相对顺序是由 use_static_cat 在类构造函数中定义在 use_dynamic_cat 之前的事实决定的。 - hybrid_forward(F, feat_static_cat: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], feat_static_real: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], feat_dynamic_cat: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], feat_dynamic_real: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#
- 覆盖此 Block 的符号图构造方法。 - 参数
- x (Symbol 或 NDArray) – 第一个输入张量。 
- *args (Symbol 列表 或 NDArray 列表) – 附加输入张量。 
 
 
 - process_dynamic_cat(F, feature: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#
 - process_dynamic_real(F, feature: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#
 
- class gluonts.mx.block.feature.FeatureEmbedder(cardinalities: typing.List[int], embedding_dims: typing.List[int], dtype: typing.Type = <class 'numpy.float32'>, **kwargs)[source]#
- 基类: - mxnet.gluon.block.HybridBlock- 嵌入一系列类别特征。 - 参数
- cardinalities – 每个类别特征的基数。 
- embedding_dims – 嵌入每个类别特征的维度数量。 
- dtype – 嵌入特征的数据类型。 
 
 - hybrid_forward(F, features: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#
- 参数
- F – 
- features – 类别特征,形状为:(N,T,C) 或 (N,C),其中 C 是类别特征的数量。 
 
- 返回
- concatenated_tensor – 嵌入特征的连接张量,形状为:(N,T,C) 或 (N,C),其中 C 是每个类别特征的嵌入维度之和,即 C = sum(self.config.embedding_dims)。 
- 返回类型
- 张量