Tag: tensorflow

java tensorflow reset_default_graph

我正在使用tensorflow java API。 在Python中,我可以通过以下方式重置默认图: tf.reset_default_graph 我在java api中找不到相应的function。 (我在Tensorflow.org上搜索了JavaDoc,并通过github上的源代码进行了搜索。) 问题:有没有办法重置java中的默认图形?

使用TensorFlow for Java进行内存泄漏

以下测试代码泄漏内存: private static final float[] X = new float[]{1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0}; public void testTensorFlowMemory() { // create a graph and session try (Graph g = new Graph(); Session s = new Session(g)) { // create a placeholder x and a const for the dimension to do a cumulative sum along Output x = g.opBuilder(“Placeholder”, “x”).setAttr(“dtype”, DataType.FLOAT).build().output(0); Output […]

Tensorflow Java多GPU推理

我有一个具有多个GPU的服务器,并希望在Java应用程序内的模型推理期间充分利用它们。 默认情况下,tensorflow会占用所有可用的GPU,但仅使用第一个GPU。 我可以想出三个选项来克服这个问题: 在进程级别限制设备可见性,即使用CUDA_VISIBLE_DEVICES环境变量。 这将要求我运行java应用程序的几个实例并在它们之间分配流量。 不是那个诱人的想法。 在单个应用程序中启动多个会话,并尝试通过ConfigProto为每个会话分配一个设备: public class DistributedPredictor { private Predictor[] nested; private int[] counters; // … public DistributedPredictor(String modelPath, int numDevices, int numThreadsPerDevice) { nested = new Predictor[numDevices]; counters = new int[numDevices]; for (int i = 0; i < nested.length; i++) { nested[i] = new Predictor(modelPath, i, numDevices, numThreadsPerDevice); } } public […]

将Tensorflow添加到Java Project Netbeans

我正在尝试根据此链接的建议安装Tensorflow for java … https://www.tensorflow.org/install/install_java#install_on_windows 说明指出要下载.jar文件,以及.dll的单独文件。 我已将jar文件包含到netbeans项目中,并设置上面网页上列出的代码。 package tensorflowtest; import org.tensorflow.Graph; import org.tensorflow.Session; import org.tensorflow.Tensor; import org.tensorflow.TensorFlow; public class TensorFlowTest { public static void main(String[] args) throws Exception { try (Graph g = new Graph()) { final String value = “Hello from ” + TensorFlow.version(); // Construct the computation graph with a single operation, a […]

用Java加载sklearn模型。 在python中使用DNNClassifier创建的模型

目标是在Java中使用tensorflow.contrib.learn.learn.DNNClassifier在python中创建/训练的模型。 目前主要问题是要知道在会话运行方法上用java给出的“张量”的名称。 我在python中有这个测试代码: from __future__ import division, print_function, absolute_import import tensorflow as tf import pandas as pd import tensorflow.contrib.learn as learn import numpy as np from sklearn import metrics from sklearn.cross_validation import train_test_split from tensorflow.contrib import layers from tensorflow.contrib.learn.python.learn.utils import input_fn_utils from tensorflow.python.ops import array_ops from tensorflow.python.framework import dtypes from tensorflow.python.util.compat import as_text print(tf.VERSION) df […]

如何使用Tensorflow 1.0 Java API创建/初始化变量

我正在尝试移植这行Python代码: my_var = tf.Variable(3, name=”input_a”) 到Java。 我能用这种方式用tf.constant做到这一点: graph.opBuilder(“Const”, name) .setAttr(“dtype”, tensorVal.dataType()) .setAttr(“value”, tensorVal).build() .output(0); 我尝试了与变量类似的方法: graph.opBuilder(“Variable”, name) .setAttr(“dtype”, tensorVal.dataType()) .setAttr(“shape”, shape) .build() .output(0); 但我得到这个错误: Exception in thread “main” java.lang.IllegalStateException: Attempting to use uninitialized value input_a [[Node: input_a/_2 = _Send[T=DT_INT32, client_terminated=false, recv_device=”/job:localhost/replica:0/task:0/gpu:0″, send_device=”/job:localhost/replica:0/task:0/cpu:0″, send_device_incarnation=1, tensor_name=”edge_5_input_a”, _device=”/job:localhost/replica:0/task:0/cpu:0″](input_a)]] 我想我需要设置一个带有值的特殊属性,或者我需要稍后对其进行初始化。 但我找不到方法。 我计划对大多数其他tf方法做同样的事情( 这是我目前的努力)。 所以我想了解如何自己提出答案。 例如,通过查看此Python源代码: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/variable_scope.py https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/state_ops.py 我怀疑我应该分配“初始化程序”属性,但java API中没有初始化程序接口或初始化方法。 […]

使用python API进行的培训作为Java API中LabelImage模块的输入?

我有java tensorflow API的问题。 我使用python tensorflow API运行训练,生成文件output_graph.pb和output_labels.txt。 现在由于某种原因,我想使用这些文件作为java tensorflow API中LabelImage模块的输入。 我认为一切都会正常工作,因为该模块只需要一个.pb和一个.txt。 不过,当我运行模块时,我收到此错误: 2017-04-26 10:12:56.711402: W tensorflow/core/framework/op_def_util.cc:332] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization(). Exception in thread “main” java.lang.IllegalArgumentException: No Operation named [input] in the Graph at org.tensorflow.Session$Runner.operationByName(Session.java:343) at org.tensorflow.Session$Runner.feed(Session.java:137) at org.tensorflow.Session$Runner.feed(Session.java:126) at it.zero11.LabelImage.executeInceptionGraph(LabelImage.java:115) at it.zero11.LabelImage.main(LabelImage.java:68) 如果你帮助我找到问题所在,我将非常感激。 此外,我想问你是否有办法从java tensorflow […]

使用估算器在java中加载/提供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 = […]