java - 将 PMML - 模型(人工神经网络)转换为 Java 代码

标签 java neural-network pmml

我有一个经过训练的人工神经网络 (ANN) 的 PMML 文件。我想创建一个 Java 方法,它只接受输入并返回目标值。

这看起来很简单,但我不知道如何实现。

PMML 版本 = 3.0

更新:2013年5月24日

我尝试使用 jpmml Java API。

这就是我所做的:

(1) 通过 Maven 中央存储库 ( link ) 下载三个 .Jar 文件:

  • pmml-manager-1.0.2.jar
  • pmml-model-1.0.2.jar
  • pmml-evaluator-1.0.2.jar

(2) 使用 eclipse 来“配置构建路径”并添加这三个外部 .Jar

(3) 导入名为“text.xml”的 PMML 文件(人工神经网络 (ANN))PMML 版本 =“3.0”

(4) 尝试运行 jpmml-project 提供的示例“TreeModelTraversalExample.java

显然由于某些原因它不起作用:

  • 上述示例不适用于 ANN。 如何重写?
  • 我的 PMML 文件采用 XML 格式。 格式正确吗?
  • 我不知道如何处理或添加 Java API。 我是否应该通过在 Eclipse 中“配置构建路径”来添加它们?

明显的事实#2,我不知道我在做什么:-)

再次感谢并致以最诚挚的问候。

斯特凡

最佳答案

JPMML 应该能够处理 PMML 3.X 和更新版本的 NeuralNetwork模型没有问题。此外,它应该能够处理此类模型可能伴随的所有规范化和非规范化转换。

我首先需要澄清一下您为什么对将 PMML 模型转换为 Java 代码感兴趣。这使整个事情变得更加复杂,并且没有增加任何值(value)。 JPMML 库本身相当紧凑,并且具有最小的外部依赖性(在撰写本文时,它仅依赖于 commons-math)。性能方面应该不会有太大差异。您可以合理地期望在现代台式计算机上每秒获得高达 10'000 的得分。

JPMML 代码库最近已移至 GitHub:http://github.com/jpmml/jpmml

Turn Inc. 的编码人员已 fork 此代码库,并正在为选定的模型类型实现 PMML 到 Java 的转换(请参阅顶级模块“pmml-translation”):https://github.com/turn/jpmml

目前我建议您查看 Openscoring 项目(内部使用 JPMML):http://www.openscoring.org

然后,您可以尝试以下操作:

  1. 使用 HTTP PUT 方法部署 XML 文件。
  2. 使用 HTTP GET 方法获取模型摘要信息。如果请求成功(而不是因 HTTP 状态 500 错误代码而失败),则您的模型得到了很好的支持。
  3. 使用 HTTP POST 方法在单一预测模式或批量预测模式下执行模型。尝试发送更大的批处理,看看是否满足您的性能要求。
  4. 使用 HTTP DELETE 方法取消部署模型。

您可以随时尝试联系项目所有者以获取更多见解。我确信他们都是好人。

关于java - 将 PMML - 模型(人工神经网络)转换为 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16687649/

相关文章:

java - 如何在应用程序关闭时运行 onLocationChanged 方法(使用 onStop 方法)

java - OneToMany/可为 null 关系的 Hibernate 性能问题

python - 如何确定Rank-3输入张量的权重维度?

r - 在 Windows 8 上将 R 模型转换为 PMML 是否有大小限制?

java - 请求客户端证书认证的URL

java - 在测试期间阻止线程以检查其状态的最佳方法是什么?

python - 反向传播算法无法正常工作

machine-learning - 使用混洗数据进行回归的随机梯度下降比未混洗数据表现更好。为什么?

python - 如何在纯Python中运行spark mllib决策树模型?

r - 将表示多项逻辑回归的 PMML 转换回 R 系数