2017-10-19 117 views
0

我有一个使用Tensorflow进行图像分类的Java demo working。它在Windows上运行正常,但现在我想将它作为来自Java Tomcat Web服务器的Web服务运行。从CentOS Linux上的Tomcat访问Tensorflow

我已经将所有Tensorflow jar添加到Tomcat的lib中,但Tensorflow具有jni依赖性。我不确定如何安装和链接,因此Tensorflow可以在CentOS Linux服务器上运行。

I have read this,但我不需要在服务器上运行python,只需从Java访问Tensorflow。

+0

您必须像在Windows上一样提供jni库。该库必须放置在你用'-Djava.library.path = ...'指定的路径上。单一区别:该库被命名为'lib.so',而不是'lib.dll'。您的问题或链接都不会告诉我们哪个库。所以我们不能告诉你要安装哪个软件包。 – blafasel

回答

0

我只是仔细一看。

简单地添加依赖到org.tensorflow:tensorflow:1.4.0-rc0(或任何你喜欢的版本)到你最喜欢的构建工具。

这将引入对org.tensorflow:libtensorflow_jni:1.4.0-rc0的依赖。这将包括以下内容:

[email protected]:~$ unzip -t .m2/repository/org/tensorflow/libtensorflow_jni/1.4.0-rc0/libtensorflow_jni-1.4.0-rc0.jar 
Archive: .m2/repository/org/tensorflow/libtensorflow_jni/1.4.0-rc0/libtensorflow_jni-1.4.0-rc0.jar 
    testing: META-INF/    OK 
    testing: META-INF/MANIFEST.MF  OK 
    testing: org/      OK 
    testing: org/tensorflow/   OK 
    testing: org/tensorflow/native/ OK 
    testing: org/tensorflow/native/darwin-x86_64/ OK 
    testing: org/tensorflow/native/linux-x86_64/ OK 
    testing: org/tensorflow/native/windows-x86_64/ OK 
    testing: org/tensorflow/native/darwin-x86_64/libtensorflow_framework.so OK 
    testing: org/tensorflow/native/darwin-x86_64/LICENSE OK 
    testing: org/tensorflow/native/darwin-x86_64/libtensorflow_jni.dylib OK 
    testing: org/tensorflow/native/linux-x86_64/libtensorflow_framework.so OK 
    testing: org/tensorflow/native/linux-x86_64/libtensorflow_jni.so OK 
    testing: org/tensorflow/native/linux-x86_64/LICENSE OK 
    testing: org/tensorflow/native/windows-x86_64/tensorflow_jni.dll OK 
    testing: org/tensorflow/native/windows-x86_64/LICENSE OK 
    testing: META-INF/maven/   OK 
    testing: META-INF/maven/org.tensorflow/ OK 
    testing: META-INF/maven/org.tensorflow/libtensorflow_jni/ OK 
    testing: META-INF/maven/org.tensorflow/libtensorflow_jni/pom.xml OK 
    testing: META-INF/maven/org.tensorflow/libtensorflow_jni/pom.properties OK 
No errors detected in compressed data of .m2/repository/org/tensorflow/libtensorflow_jni/1.4.0-rc0/libtensorflow_jni-1.4.0-rc0.jar. 

正如你可以看到这已经包含了所有需要的二进制文件以获得JNI工作的所有正式支持的平台上。它包含x86_64上的任何Linux。

只要你不尝试在raspi或32位CentOS上使用它,只要你使用合适的构建工具,你应该保存。

唯一的风险在于这些库依赖于其他系统库。在libtensorflow_framework.soldd呼叫显示:

[email protected]:~$ ldd org/tensorflow/native/linux-x86_64/libtensorflow_framework.so 
    linux-vdso.so.1 => (0x00007ffffaa62000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f07c6494000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f07c6290000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f07c6073000) 
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f07c5cf0000) 
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f07c5ada000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f07c5710000) 
    /lib64/ld-linux-x86-64.so.2 (0x000056525c661000) 

如果你没有找到你的系统上,这些传递依赖你应该尝试tensorflow的或旧版本的CentOS的更新。