【问题标题】:Convert PMML - Model (Artificial Neural Network) to Java Code将 PMML - 模型(人工神经网络)转换为 Java 代码
【发布时间】:2013-05-17 06:16:58
【问题描述】:

我有一个经过训练的人工神经网络 (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-model-1.0.2.jar
  • pmml-evaluator-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 中通过“配置构建路径”添加这些?

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

再次感谢和最诚挚的问候。

斯蒂芬

【问题讨论】:

    标签: java neural-network pmml


    【解决方案1】:

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

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

    【讨论】:

    • 亲爱的杰夫,谢谢。我已经尝试过了,但不知道如何正确使用它。我将编辑我的第一篇文章,让您看看我到目前为止所做的尝试。
    【解决方案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 方法取消部署模型。

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

    【讨论】:

    • 您好,非常感谢。我想转换经过训练的 .pmml 模型,因为我想在现有程序中包含一个 Java 方法(如“输入 x1-x5 并返回 Y”)。神经网络本身是在一个独立程序中训练的,该程序只允许将其导出为 PMML 模型。实际上我确实认为 JPMML 会起作用,但我不知道如何让它起作用。正如我之前所说,我真的是一个菜鸟。我已经尝试过运行“openscoring”,但我认为它不起作用(这里有完整的管理员权限)。我真的需要 JPMML 的分步指导。我会问项目所有者。
    • 你好。最后它起作用了。我真正需要的只是 JPMML 捆绑包 .jar 文件。它确实适用于我的 PMML 文件。再次感谢你。特别感谢项目业主。问候,斯特凡
    • @user1808924 你能给我一个链接或Java代码示例,它读取PMML并预测scikit-learn MultilayerPerceptron的分数。
    【解决方案3】:

    另一种方法是使用 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

    【讨论】:

      猜你喜欢
      • 2014-01-15
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2010-12-04
      • 2015-10-15
      • 1970-01-01
      • 2011-07-14
      相关资源
      最近更新 更多