首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java应用中运行H2O深水TensorFlow MOJO?

如何在Java应用中运行H2O深水TensorFlow MOJO?
EN

Stack Overflow用户
提问于 2017-08-22 11:52:30
回答 2查看 342关注 0票数 0

我使用后端(遵循深水小册子 MNIST示例)构建了一个TensorFlow H2O深水模型。

(首先,我对一个H2O GBM模型做了同样的工作,以验证它在一般情况下工作,而不依赖于我的应用程序中的深水依赖项。(这很管用。)

我下载了我的深水TensorFlow模型(我是用Python构建的):

代码语言:javascript
运行
复制
modelfile = model.download_mojo(path="/h2o_testdata/generatedModels", get_genmodel_jar=True)

我觉得这一步又起作用了。现在,我想在我的Java应用程序中使用模型zip文件:

我在我的项目中添加了依赖项(通过Maven添加了依赖项(h2o-genmodel.jar ),通过复制和粘贴添加了深水-all.jar,因为我在Maven上找不到它)。似乎需要添加一些附加的依赖项或源代码来添加/应用TensorFlow‘后端’(不确定‘后端’在这里意味着什么,因为我只想在这里进行推断,而不是模型培训)?

我实例化了模型:

代码语言:javascript
运行
复制
EasyPredictModelWrapper model = new EasyPredictModelWrapper(MojoModel.load("src/main/resources/generatedModels/DeepWater_model_python_1503388273301_1.zip"));

这是一个例外:

代码语言:javascript
运行
复制
java.lang.UnsatisfiedLinkError: /private/var/folders/0s/0xdkb9n12yqdb3fs71926z3c0000gp/T/libtensorflow_jni.so147ba98b-e7e3-49bb-8d4e-e5a06efd7a66: dlopen(/private/var/folders/0s/0xdkb9n12yqdb3fs71926z3c0000gp/T/libtensorflow_jni.so147ba98b-e7e3-49bb-8d4e-e5a06efd7a66, 1): no suitable image found.  Did find:
    /private/var/folders/0s/0xdkb9n12yqdb3fs71926z3c0000gp/T/libtensorflow_jni.so147ba98b-e7e3-49bb-8d4e-e5a06efd7a66: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00
    /private/var/folders/0s/0xdkb9n12yqdb3fs71926z3c0000gp/T/libtensorflow_jni.so147ba98b-e7e3-49bb-8d4e-e5a06efd7a66: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at deepwater.backends.tensorflow.LibraryLoader.loadNativeLib(LibraryLoader.java:87)
    at deepwater.backends.tensorflow.TensorflowBackend.<clinit>(TensorflowBackend.java:30)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at hex.genmodel.algos.deepwater.DeepwaterMojoModel.createDeepWaterBackend(DeepwaterMojoModel.java:96)
    at hex.genmodel.algos.deepwater.DeepwaterMojoReader.readModelData(DeepwaterMojoReader.java:31)
    at hex.genmodel.ModelMojoReader.readAll(ModelMojoReader.java:143)
    at hex.genmodel.ModelMojoReader.readFrom(ModelMojoReader.java:34)
    at hex.genmodel.MojoModel.load(MojoModel.java:35)
    at com.github.megachucky.kafka.streams.machinelearning.Kafka_Streams_Deep_Learning_H2O_MNIST.main(Kafka_Streams_Deep_Learning_H2O_MNIST.java:15)
Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot find TensorFlow native library for OS: darwin, architecture: x86_64. See https://github.com/tensorflow/tensorflow/tree/master/java/README.md for possible solutions (such as building the library from source).
    at org.tensorflow.NativeLibrary.load(NativeLibrary.java:66)
    at org.tensorflow.TensorFlow.init(TensorFlow.java:27)
    at org.tensorflow.TensorFlow.<clinit>(TensorFlow.java:31)
    at org.tensorflow.Graph.<clinit>(Graph.java:194)
    at deepwater.backends.tensorflow.models.ModelFactory.readMetaGraph(ModelFactory.java:143)
    at deepwater.backends.tensorflow.models.ModelFactory.LoadModelFromFile(ModelFactory.java:220)
    at deepwater.backends.tensorflow.TensorflowBackend.buildNet(TensorflowBackend.java:74)
    at hex.genmodel.algos.deepwater.DeepwaterMojoReader.readModelData(DeepwaterMojoReader.java:64)
    at hex.genmodel.ModelMojoReader.readAll(ModelMojoReader.java:143)
    at hex.genmodel.ModelMojoReader.readFrom(ModelMojoReader.java:34)
    at hex.genmodel.MojoModel.load(MojoModel.java:35)
    at com.github.megachucky.kafka.streams.machinelearning.Kafka_Streams_Deep_Learning_H2O_MNIST.main(Kafka_Streams_Deep_Learning_H2O_MNIST.java:15)

我找不到任何关于如何设置这个的文档,所以也许有人能帮上忙?还是我也需要在我的笔记本电脑上安装TensorFlow?我认为这在H2O中没有必要,因为它“只是生成H2O代码”,我可以在一个应用程序中使用它--类似于其他非深水H2O模型?

顺便问一句,附带的问题是:我如何通过Maven依赖获得深水-all.jar?我找不到它。

EN

回答 2

Stack Overflow用户

发布于 2017-08-22 12:00:13

我只能回答你的第二个问题。您不应该将.jars复制到Maven项目中。您需要将它们安装到本地存储库中并将依赖项添加到pom.xml中。(您可以选择您想要的作为工件和组。框架的供应商将是一个很好的选择)

票数 0
EN

Stack Overflow用户

发布于 2017-08-23 01:52:01

您不能使用Maven h2o-genmodel.jar. can。您必须使用来自您正在使用的H2O的h2o-genmodel.jar . use。深水-all.jar也是如此。它必须来自同一个H2O。you包含您所需的所有代码,包括后端。

由于您使用了参数get_genmodel_jar=True,所以您下载了与mojo同时的参数。这是你必须使用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45816896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档