2017-01-18 2 views

답변

3

TensorFlow 팀이 Java 인터페이스를 개발하고 있지만 아직 안정적이지 않습니다. 기존 코드는 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/java이고 여기에서 개발 된 업데이트는 https://github.com/tensorflow/tensorflow/issues/5입니다. 이미 사용 된 방법을 보려면 GraphTest.java, SessionTest.javaTensorTest.java을 살펴볼 수 있습니다 (비록 설명이 있지만 나중에 변경 될 수 있음). 기본적으로 Graph 개체에 이진 저장된 그래프를로드하고 Session을 생성 한 다음 적절한 값 (Tensor 초)으로 실행하여 출력이 List<Tensor>이되도록해야합니다. 소스의 예제에서 함께 넣어 :

import java.nio.file.Files; 
import java.nio.file.Paths; 
import org.tensorflow.Graph; 
import org.tensorflow.Session; 
import org.tensorflow.Tensor; 

try (Graph graph = new Graph()) { 
    graph.importGraphDef(Files.readAllBytes(Paths.get("saved_model.pb")); 
    try (Session sess = new Session(graph)) { 
     try (Tensor x = Tensor.create(1.0f); 
      Tensor y = s.runner().feed("x", x).fetch("y").run().get(0)) { 
      System.out.println(y.floatValue()); 
     } 
    } 
} 
0

나는 그 .pb로 끝나는하는 protobuf 파일을 읽는 작업에 사용되는 코드입니다.

try (SavedModelBundle b = SavedModelBundle.load("/tmp/model", "serve")) { 
    Session sess = b.session(); 
    ... 
    float[][]matrix = sess.runner() 
     .feed("x", input) 
     .feed("keep_prob", keep_prob) 
     .fetch("y_conv") 
     .run() 
     .get(0) 
     .copyTo(new float[1][10]); 
    ... 
} 

내가 그것을 저장하는 데 사용되는 파이썬 코드이었다 :

signature = tf.saved_model.signature_def_utils.build_signature_def(
    inputs = {'x': tf.saved_model.utils.build_tensor_info(x)}, 
    outputs = {'y_conv': tf.saved_model.utils.build_tensor_info(y_conv)}, 
) 
    builder = tf.saved_model.builder.SavedModelBuilder("/tmp/model") 
    builder.add_meta_graph_and_variables(sess, 
     [tf.saved_model.tag_constants.SERVING], 
     signature_def_map={tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature} 
    ) 
    builder.save() 
관련 문제