Interpreter

공개 최종 클래스 통역사

TensorFlow Lite로 모델 추론을 구동하는 드라이버 클래스입니다.

참고: 아래 API 기능에 대한 자세한 내용은 InterpreterApi와 InterpreterFactory의 인스턴스를 만듭니다.

Interpreter는 선행 학습된 TensorFlow Lite 모델을 캡슐화합니다. 이 모델에서 연산은 모델 추론을 위해 실행됩니다

예를 들어 모델이 하나의 입력만 취하고 하나의 출력만 반환하는 경우:

try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.run(input, output);
 }
 

모델이 여러 입력 또는 출력을 사용하는 경우:

Object[] inputs = {input0, input1, ...};
 Map<Integer, Object> map_of_indices_to_outputs = new HashMap<>();
 FloatBuffer ith_output = FloatBuffer.allocateDirect(3 * 2 * 4);  // Float tensor, shape 3x2x4.
 ith_output.order(ByteOrder.nativeOrder());
 map_of_indices_to_outputs.put(i, ith_output);
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
 }
 

모델이 문자열 텐서를 취하거나 생성하는 경우:

String[] input = {"foo", "bar"};  // Input tensor shape is [2].
 String[][] output = new String[3][2];  // Output tensor shape is [3, 2].
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, output);
 }
 

셰이프 [] 와 셰이프[1] 사이에는 차이가 있습니다. 스칼라 문자열 텐서의 경우 출력:

String[] input = {"foo"};  // Input tensor shape is [1].
 ByteBuffer outputBuffer = ByteBuffer.allocate(OUTPUT_BYTES_SIZE);  // Output tensor shape is [].
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, outputBuffer);
 }
 byte[] outputBytes = new byte[outputBuffer.remaining()];
 outputBuffer.get(outputBytes);
 // Below, the `charset` can be StandardCharsets.UTF_8.
 String output = new String(outputBytes, charset);
 

TensorFlow 모델을 TensorFlowLite로 변환할 때 입력 및 출력의 순서가 결정됩니다. 입력의 기본 모양과 마찬가지로

입력이 다차원 배열로 제공되면 해당 입력 텐서는 해당 배열의 모양에 따라 암시적으로 크기가 조정됩니다. 입력이 Buffer로 제공되는 경우 암시적 크기 조절이 수행되지 않습니다. 호출자는 Buffer 바이트 크기가 해당 텐서의 값과 일치하거나 먼저 resizeInput(int, int[])를 통해 텐서의 크기를 조절합니다. 텐서 형태 및 유형 정보는 getInputTensor(int)getOutputTensor(int)를 통해 제공되는 Tensor 클래스를 통해 얻을 수 있습니다.

경고:Interpreter 인스턴스는 스레드로부터 안전하지 않습니다. Interpreter close()를 호출하여 명시적으로 해제해야 하는 리소스를 소유합니다.

TFLite 라이브러리는 NDK API 19에 대해 빌드됩니다. Android API 수준 19 미만에서도 작동할 수 있지만 보장되지는 않습니다.

중첩된 클래스

클래스 Interpreter.Options 런타임 인터프리터 동작을 제어하기 위한 옵션 클래스입니다.

공개 생성자

Interpreter(File modelFile)
Interpreter를 초기화합니다.
인터프리터(File modelFile, Interpreter.Options options)
Interpreter를 초기화하고 인터프리터 동작을 맞춤설정하는 옵션을 지정합니다.
인터프리터(ByteBuffer byteBuffer)
모델 파일의 ByteBufferInterpreter를 초기화합니다.
Interpreter(ByteBuffer byteBuffer, Interpreter.Options 옵션)
모델 파일의 ByteBufferInterpreter 맞춤 Interpreter.Options입니다.

공개 메서드

void
allocateTensors()
필요한 경우 모든 텐서의 할당을 명시적으로 업데이트합니다.
void
close()
InterpreterApi 인스턴스와 연결된 리소스를 해제합니다.
int
getInputIndex(String opName)
입력의 작업 이름이 주어진 입력의 색인을 가져옵니다.
Tensor
getInputTensor(int inputIndex)
제공된 입력 색인과 연결된 텐서를 가져옵니다.
int
getInputTensorCount()
입력 텐서의 수를 가져옵니다.
Tensor
getInputTensorFromSignature(String inputName, String signatureKey)
제공된 입력 이름 및 서명 메서드 이름과 연결된 텐서를 가져옵니다.
긴 버전
getLastNativeInferenceDurationNanoseconds()
네이티브 추론 타이밍을 반환합니다.
int
getOutputIndex(String opName)
출력의 작업 이름이 주어진 출력의 색인을 가져옵니다.
Tensor
getOutputTensor(int outputIndex)
제공된 출력 색인과 연결된 텐서를 가져옵니다.
int
getOutputTensorCount()
출력 텐서 수를 가져옵니다.
Tensor
getOutputTensorFromSignature(String outputName, String signatureKey)
특정 서명 메서드에서 제공된 출력 이름과 연결된 텐서를 가져옵니다.
String[]
getSignatureInputs(String signatureKey)
signatureKey 메서드의 SignatureDefs 입력 목록을 가져옵니다.
String[]