알려진 간접 하위 클래스 |
TensorFlow Lite 모델 인터프리터 인터페이스(실험적 메서드 제외)
InterpreterApi
인스턴스는 선행 학습된 TensorFlow Lite 모델을 캡슐화합니다. 이 모델은
모델 추론을 위해 실행됩니다
예를 들어 모델이 하나의 입력만 취하고 하나의 출력만 반환하는 경우:
try (InterpreterApi interpreter =
new InterpreterApi.create(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 (InterpreterApi interpreter =
new InterpreterApi.create(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 (InterpreterApi interpreter =
new InterpreterApi.create(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[])
를 통해 텐서의 크기를 조절합니다. 텐서 형태 및 유형 정보는
Tensor
클래스를 통해 얻은 값이며 getInputTensor(int)
및 getOutputTensor(int)
를 통해 사용할 수 있습니다.
경고:InterpreterApi
인스턴스는 스레드로부터 안전하지 않습니다.
경고:InterpreterApi
인스턴스는 반드시 다음과 같은 리소스를 소유합니다.
close()
를 호출하여 명시적으로 해제
TFLite 라이브러리는 NDK API 19에 대해 빌드됩니다. Android API 수준 19 미만에서도 작동할 수 있지만 보장되지는 않습니다.
중첩된 클래스
클래스 | InterpreterApi.Options | 런타임 인터프리터 동작을 제어하기 위한 옵션 클래스입니다. |
공개 메서드
추상 무효 |
allocateTensors()
필요한 경우 모든 텐서의 할당을 명시적으로 업데이트합니다.
|
추상 무효 |
close()
InterpreterApi 인스턴스와 연결된 리소스를 해제합니다. |
정적 InterpreterApi | |
정적 InterpreterApi |
create(ByteBuffer byteBuffer, InterpreterApi.Options 옵션)
지정된 모델과 옵션을 사용하여
InterpreterApi 인스턴스를 생성합니다. |
추상 정수 | |
추상 Tensor |
getInputTensor(int inputIndex)
제공된 입력 색인과 연결된 텐서를 가져옵니다.
|
추상 정수 |
getInputTensorCount()
입력 텐서의 수를 가져옵니다.
|
추상 긴 버전 |
getLastNativeInferenceDurationNanoseconds()
네이티브 추론 타이밍을 반환합니다.
|
추상 정수 | |
추상 Tensor |
getOutputTensor(int outputIndex)
제공된 출력 색인과 연결된 텐서를 가져옵니다.
|
추상 정수 |
getOutputTensorCount()
출력 텐서 수를 가져옵니다.
|
추상 무효 |
resizeInput(int idx, int[] dims, boolean strict)
네이티브 모델의 idx번째 입력을 지정된 어둡게로 조절합니다.
|