(1) 我们如何构建这样的模型并将其导出为 PMML 文件?
您已经描绘了一个 (6, 3, 6) NN。它在架构上与 Scikit-Learn 的
MLPRegressor
类实现的内容相同。
您可以使用
MLPRegressor
模拟自动编码器;在当前情况下,您将定义一个具有单个隐藏层(包含三个神经元)的神经网络,并使用 X == y
: 对其进行训练
autoencoder = MLPRegressor(hidden_layer_sizes = (3, ))
autoencoder.fit(X, X)
(2) PMML 能够编码这样的模型结构吗?
PMML 能够使用
MLPRegressor
模型元素表示成熟的
NeuralNetwork
对象。因此,它还能够表示其“截断”变体,例如自动编码器。
这个想法是在转换过程中简单地忽略最后(即最右边)层。实际上,图中的 (6, 3, 6) NN 被截断为 (6, 3) NN。
SkLearn2PMML 包为此提供了
sklearn2pmml.neural_network.MLPTransformer
变压器。
(3) PMML 中生成此模型中的 N 个输出节点所需的组件是什么?
无需生成任何额外的东西。
截断的 (6, 3) 神经网络提供三个输出
y(0)
、y(1)
和 y(2)
,然后您可以将其传递给其他变压器或模型。