2

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

这似乎很容易,但我不知道如何实现它。

PMML 版本 = 3.0

更新:2013 年 5 月 24 日

我尝试使用 jpmml Java API。

这就是我所做的:

(1)通过Maven Central Repository(链接)下载三个.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-File(人工神经网络(ANN))PMML version="3.0"

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

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

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

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

再次感谢和最亲切的问候。

斯特凡

4

3 回答 3

2

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

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

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 方法取消部署模型。

您可以随时尝试联系项目所有者以获取更多信息。我敢肯定他们是好人。

于 2013-05-30T07:03:15.903 回答
1

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

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

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

于 2013-06-05T18:12:16.147 回答
0

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

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

于 2013-05-23T22:18:06.847 回答