- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用了人口普查数据,并使用 tensorflow 中的估算器 api 创建了一个广泛而深入的模型。在用 Java 加载模型时,似乎有一个错误不允许加载模型。异常看起来像
Exception in thread "main" org.tensorflow.TensorFlowException: Op type not
registered 'SparseFeatureCross' in binary running on gmalhotra-mba-2.local.
Make sure the Op and Kernel are registered in the binary running in this
process.
at org.tensorflow.SavedModelBundle.load(Native Method)
at org.tensorflow.SavedModelBundle.load(SavedModelBundle.java:39)
at deeplearning.DeepLearningTest.main(DeepLearningTest.java:32)
请在下面找到用于保存模型的python代码: https://gist.github.com/gaganmalhotra/cd6a5898b9caf9005a05c8831a9b9153
使用的Java代码如下:
public static void main(String[] args) {
try (SavedModelBundle b = SavedModelBundle.load("/Users/gagandeep.malhotra/Documents/SampleTF_projects/temporaryModel/1510624417/", "serve")) {
Session sess = b.session();
//Create the input sensor
float[][] mat=new float[1][1];
mat[0]=new float[]{0.5f};
// create tensors specific to inputs ....
Tensor<?> x = (Tensor<?>) Tensor.create(mat);
//run the model
float[][] y = sess.runner()
.feed("input", x)
.fetch("output")
.run()
.get(0)
.copyTo(new float[1][1]);
//print the result
System.out.println(y[0][0]);
}
PS:使用的 Tensorflow 版本:1.3
最佳答案
当您在 tf.contrib
模块中使用操作时,它们不被视为实验性的,因此不属于 stable TensorFlow API 的一部分。并且不包含在其他语言发行版中。
但是,在 TensorFlow 1.4 及更高版本中,您可以使用 TensorFlow.loadLibrary()
在 Java 中显式加载共享库。 .
为此,首先您需要找到包含您感兴趣的 tf.contrib
操作实现的共享库的位置。在本例中,它似乎是 tf.contrib.layers
,所以你会做这样的事情:
python -c "import tensorflow; print(tensorflow.contrib.layers.__path__)"
这会打印出如下内容:
['/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers']
然后您将使用类似以下内容找到该路径中的所有共享库:
find /usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers -name "*.so"
这会是这样的:
/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/ops/_sparse_feature_cross_op.so
好了,现在你有了那个库,你可以使用 Java 加载它:
public static void main(String[] args) {
TensorFlow.loadLibrary("/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/ops/_sparse_feature_cross_op.so");
// And now load the model etc.
}
注意事项:
如果您想在不同的机器上运行,您需要将上面的 .so
文件与您的程序打包在一起,并调整对 TensorFlow.loadLibrary() 的调用
适本地。
确保您对 Python 和 Java (1.4) 使用相同的 TensorFlow 版本
希望对您有所帮助。
关于java - 使用估算器在 Java 中加载/提供 tensorflow 模型时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47276624/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!