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

时间:2013-05-22 09:01:06

标签: java neural-network pmml

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

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

PMML版本= 3.0

更新:24.05.2013

我尝试使用jpmml Java API。

这就是我的表现:

(1)通过Maven Central Repository(link)下载三个.Jar文件:

  • pmml-manager-1.0.2.jar
  • PMML模型-1.0.2.jar
  • PMML评估器-1.0.2.jar

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

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

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

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

  • 上述例子不适用于ANN。 如何重写?
  • 我的PMML文件是XML格式的。 格式正确吗?
  • 我不知道如何处理或添加Java API。 我是否应该在eclipse中通过“configure build path”添加它们?

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

再次感谢并表示最诚挚的问候。

的Stefan

3 个答案:

答案 0 :(得分:2)

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

我可以澄清一下,为什么你有兴趣首先将PMML模型转换为Java代码。这使整个问题复杂化,并没有增加任何价值。 JPMML库本身相当紧凑,并且具有最小的外部依赖性(在编写本文时,它仅取决于commons-math)。性能方面不应该有太大差异。您可以合理地期望在现代台式计算机上获得高达10,000的scorings / sec。

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

Turn Inc.的研究员已经分叉了这个代码库,正在为选定的模型类型实现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方法取消部署模型。
  5. 您可以随时尝试与项目所有者联系以获取更多信息。我相信他们是好人。

答案 1 :(得分:1)

另一种方法是使用Cascading API。 Cascading有一个名为“Pattern”的库,它将PMML模型转换为Java中的级联应用程序。 https://github.com/Cascading/pattern

通常这些是针对Hadoop的工作;但是,如果在Cascading中使用“本地模式”流程规划器,则可以将其构建为JAR文件以包含在其他Java应用程序中。

ANN模型正在进行中。查看开发者电子邮件列表:https://groups.google.com/forum/?fromgroups#!forum/pattern-user

答案 2 :(得分:0)

我认为这可能会满足您的需求。它是一个开源库,声称能够读取和评估pmml神经网络。我没试过。

https://code.google.com/p/jpmml/