InterpreterApi

공개 인터페이스 InterpreterApi
알려진 간접 하위 클래스

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
create(File modelFile, InterpreterApi.Options options)
지정된 모델과 옵션을 사용하여 InterpreterApi 인스턴스를 생성합니다.
정적 InterpreterApi
create(ByteBuffer byteBuffer, InterpreterApi.Options 옵션)
지정된 모델과 옵션을 사용하여 InterpreterApi 인스턴스를 생성합니다.
추상 정수
getInputIndex(String opName)
입력의 작업 이름이 주어진 입력의 색인을 가져옵니다.
추상 Tensor
getInputTensor(int inputIndex)
제공된 입력 색인과 연결된 텐서를 가져옵니다.
추상 정수
getInputTensorCount()
입력 텐서의 수를 가져옵니다.
추상 긴 버전
getLastNativeInferenceDurationNanoseconds()
네이티브 추론 타이밍을 반환합니다.
추상 정수
getOutputIndex(String opName)
출력의 작업 이름이 주어진 출력의 색인을 가져옵니다.
추상 Tensor
getOutputTensor(int outputIndex)
제공된 출력 색인과 연결된 텐서를 가져옵니다.
추상 정수
getOutputTensorCount()
출력 텐서 수를 가져옵니다.
추상 무효
resizeInput(int idx, int[] dims, boolean strict)
네이티브 모델의 idx번째 입력을 지정된 어둡게로 조절합니다.
추상 무효
resizeInput(int idx, int[] dims)
네이티브 모델의 idx번째 입력을 지정된 어둡게로 조절합니다.
추상 무효
run(객체 입력, 객체 출력)
모델이 하나의 입력만 취하고 하나의 출력만 제공하는 경우 모델 추론을 실행합니다.
추상 무효
runForMultipleInputsOutputs(Object[] input, Map<IntegerObject> 출력)
모델이 여러 입력을 사용하거나 여러 출력을 반환하는 경우 모델 추론을 실행합니다.

상속된 메서드

공개 메서드

<ph type="x-smartling-placeholder"></ph> 공개 추상 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. allocateTensors ()

필요한 경우 모든 텐서의 할당을 명시적으로 업데이트합니다.

이렇게 하면 입력을 사용하여 종속 텐서의 형태와 메모리 할당을 전파합니다. 텐서 형태를 정의합니다.

참고: 이 호출은 *순전히 선택 사항*입니다. 텐서 할당은 (입력 텐서의 크기가 조정된 경우) 이 호출은 그래프를 실행하기 전에 출력 텐서의 형태. 예:

 interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
 interpreter.allocateTensors();
 FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
 // Populate inputs...
 FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
 interpreter.run(input, output)
 // Process outputs...

참고: 일부 그래프에는 동적으로 형태의 출력이 있으며, 이 경우 출력 형태가 완전히 전파됩니다

생성 값
IllegalStateException 그래프의 텐서를 성공적으로 할당하지 못한 경우.

<ph type="x-smartling-placeholder"></ph> 공개 추상 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. 닫기 ()

InterpreterApi 인스턴스와 연결된 리소스를 해제합니다.

<ph type="x-smartling-placeholder"></ph> 공개 정적 InterpreterApi 만들기 (File modelFile, InterpreterApi.Options options)

지정된 모델과 옵션을 사용하여 InterpreterApi 인스턴스를 생성합니다. 모델 파일에서 로드됩니다.

매개변수
modelFile 선행 학습된 TF Lite 모델이 포함된 파일입니다.
옵션 인터프리터 동작을 맞춤설정하기 위한 옵션 집합입니다.
생성 값
IllegalArgumentException modelFile가 유효한 TensorFlow Lite를 인코딩하지 않는 경우 있습니다.

<ph type="x-smartling-placeholder"></ph> 공개 정적 InterpreterApi 만들기 (ByteBuffer byteBuffer, InterpreterApi.Options 옵션)

지정된 모델과 옵션을 사용하여 InterpreterApi 인스턴스를 생성합니다. 모델 ByteBuffer에서 읽습니다.

매개변수
byteBuffer 직렬화된 바이너리 형식으로 선행 학습된 TF Lite 모델입니다. ByteBuffer는 InterpreterApi 인스턴스를 생성한 후에는 수정할 수 없습니다. ByteBuffer는 모델 파일을 메모리 매핑하는 MappedByteBuffer이거나 모델의 바이트 콘텐츠를 포함하는 nativeOrder()의 직접 ByteBuffer입니다.
옵션 인터프리터 동작을 맞춤설정하기 위한 옵션 집합입니다.
생성 값
IllegalArgumentException byteBufferMappedByteBuffer도 아니고 nativeOrder의 직접 ByteBuffer입니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getInputIndex (문자열 opName)

입력의 작업 이름이 주어진 입력의 색인을 가져옵니다.

매개변수
opName
생성 값
IllegalArgumentException opName가 사용된 모델의 어떤 입력과도 일치하지 않는 경우 인터프리터를 초기화합니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 Tensor getInputTensor (int inputIndex)

제공된 입력 색인과 연결된 텐서를 가져옵니다.

매개변수
inputIndex
생성 값
IllegalArgumentException inputIndex가 음수이거나 다음 값보다 작지 않은 경우 모델 입력 개수입니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getInputTensorCount ()

입력 텐서의 수를 가져옵니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 긴 형식 getLastNativeInferenceDurationNanoseconds ()

네이티브 추론 타이밍을 반환합니다.

생성 값
IllegalArgumentException 모델이 인터프리터에 의해 초기화되지 않은 경우입니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getOutputIndex (문자열 opName)

출력의 작업 이름이 주어진 출력의 색인을 가져옵니다.

매개변수
opName
생성 값
IllegalArgumentException opName가 사용된 모델의 어떤 출력과도 일치하지 않는 경우 인터프리터를 초기화합니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 Tensor getOutputTensor (int outputIndex)

제공된 출력 색인과 연결된 텐서를 가져옵니다.

참고: 추론이 끝날 때까지 출력 텐서 세부정보 (예: 셰이프)가 완전히 채워지지 않을 수 있습니다. 실행됩니다 추론을 실행하기 *전에* 업데이트된 세부정보가 필요한 경우 (예: 출력 텐서 형태를 무효화할 수 있는 입력 텐서)에 대해 allocateTensors() 사용 명시적으로 할당 및 셰이프 전파를 트리거합니다. 출력 모양이 있는 그래프의 경우 출력 셰이프는 입력 *값*에 종속되어 있고 살펴보겠습니다

매개변수
outputIndex
생성 값
IllegalArgumentException outputIndex가 음수이거나 다음 값보다 작지 않은 경우 모델 출력의 수를 나타냅니다

<ph type="x-smartling-placeholder"></ph> 공개 추상 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getOutputTensorCount ()

출력 텐서 수를 가져옵니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. resizeInput (int idx, int[] dims, boolean strict)

네이티브 모델의 idx번째 입력을 지정된 어둡게로 조절합니다.

`strict` 가 True인 경우 알 수 없는 크기만 크기를 조절할 수 있습니다. 알 수 없는 측정기준: `Tensor.shapeSignature()`에 의해 반환된 배열에 `-1`로 표시됩니다.

매개변수
IDX
어둡게
엄격
생성 값
IllegalArgumentException idx가 음수이거나 숫자보다 작지 않은 경우 모델 입력 idx번째 입력의 크기를 조절할 때 오류가 발생하는지 확인합니다. 또한 `strict` 가 True일 때 고정된 크기로 텐서의 크기를 조정하려고 할 때 발생합니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. resizeInput (int idx, int[] dims)

네이티브 모델의 idx번째 입력 값을 지정된 어둡게로 조절합니다.

매개변수
IDX
어둡게
생성 값
IllegalArgumentException idx가 음수이거나 숫자보다 작지 않은 경우 모델 입력 idx번째 입력의 크기를 조절할 때 오류가 발생하는지 확인합니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. 실행 (객체 입력, 객체 출력)

모델이 하나의 입력만 취하고 하나의 출력만 제공하는 경우 모델 추론을 실행합니다.

경고: Buffer인 경우 (직접적이고 필수는 아님) API가 더 효율적입니다. 입력/출력 데이터 유형으로 사용됩니다. Buffer를 사용하여 피드하고 가져오기를 고려해 보세요. 원시 데이터를 사용하여 성능을 향상시킬 수 있습니다 다음과 같은 구체적인 Buffer 유형은 다음과 같습니다. 지원됨:

  • ByteBuffer - 모든 기본 원시 텐서 유형과 호환됩니다.
  • FloatBuffer - 부동 텐서와 호환됩니다.
  • IntBuffer - int32 텐서와 호환됩니다.
  • LongBuffer - int64 텐서와 호환됩니다.
를 통해 개인정보처리방침을 정의할 수 있습니다. 불리언 유형은 Buffer가 아닌 배열이나 스칼라 입력으로만 지원됩니다.

매개변수
입력 배열이나 다차원 배열 또는 기본 유형의 Buffer int, float, long 및 byte가 있습니다. Buffer는 큰 값을 전달하는 데 선호되는 방법입니다. 기본 유형의 경우 입력 데이터를 사용하고 문자열 유형은 다차원 배열 입력 경로입니다. Buffer가 사용되면 다음 날짜까지 콘텐츠가 변경되지 않아야 합니다. 모델 추론이 완료되며 호출자는 Buffer가 위치를 지정합니다. null 값은 호출자가 버퍼 핸들 상호 운용성을 허용하는 Delegate이며 이러한 버퍼는 Tensor를 입력합니다.
output 출력 데이터의 다차원 배열 또는 기본 유형의 Buffer int, float, long 및 byte가 있습니다. Buffer를 사용하는 경우 호출자는 적절한 쓰기 위치를 설정해야 합니다. null 값이 허용되며 특정 사례(예: 호출자가 버퍼 핸들을 허용하는 Delegate를 사용하는 경우) 상호 운용성을 구현하고 이러한 버퍼가 출력 Tensor에 바인딩되었습니다 (Interpreter.Options#setAllowBufferHandleOutput(boolean) 참조). 또는 그래프에 동적으로 도형 출력이 있고 호출자가 추론이 호출된 후 출력 Tensor 도형을 쿼리하여 출력에서 직접 데이터를 가져와야 하는 경우 텐서 (Tensor.asReadOnlyBuffer()를 통해)
생성 값
IllegalArgumentException input가 null이거나 비어 있는 경우, 또는 다음과 같은 경우 오류가 발생한 경우 살펴보겠습니다
IllegalArgumentException (실험용, 변경될 수 있음) setCancelled(true)에 의해 중단됩니다.

<ph type="x-smartling-placeholder"></ph> 공개 추상 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. runForMultipleInputsOutputs (객체[] 입력, <정수객체> 출력)

모델이 여러 입력을 사용하거나 여러 출력을 반환하는 경우 모델 추론을 실행합니다.

경고: Buffer가 가능하면 직접 사용하는 것이 좋지만 필수는 아닌 경우 API가 더 효율적입니다. 입력/출력 데이터 유형으로 사용됩니다. Buffer를 사용하여 피드하고 가져오기를 고려해 보세요. 원시 데이터를 사용하여 성능을 향상시킬 수 있습니다 다음과 같은 구체적인 Buffer 유형은 다음과 같습니다. 지원됨:

  • ByteBuffer - 모든 기본 원시 텐서 유형과 호환됩니다.
  • FloatBuffer - 부동 텐서와 호환됩니다.
  • IntBuffer - int32 텐서와 호환됩니다.
  • LongBuffer - int64 텐서와 호환됩니다.
를 통해 개인정보처리방침을 정의할 수 있습니다. 불리언 유형은 Buffer가 아닌 배열이나 스칼라 입력으로만 지원됩니다.

참고: inputsoutputs의 개별 요소에 대한 null 값은 다음과 같습니다. 호출자가 버퍼 핸들 상호 운용성을 허용하는 Delegate를 사용 중인 경우에만 허용됩니다. 이러한 버퍼는 상응하는 입력 또는 출력 Tensor에 바인딩되었습니다.

매개변수
입력 입력 데이터의 배열입니다. 입력은 있습니다. 각 입력은 배열 또는 다차원 배열 또는 Buffer의 int, float, long 및 byte를 포함하는 프리미티브 유형입니다. Buffer를 사용하는 것이 좋습니다. 는 다차원 배열을 사용해야 하는 반면, 문자열 유형은 입력 경로 Buffer를 사용하면 모델이 완료될 때까지 콘텐츠가 변경되지 않아야 합니다. 추론이 완료되며 호출자는 Buffer가 적절한 시점에 있는지 확인해야 합니다. 읽기 위치를 지정해야 합니다.
출력 출력 색인을 출력 데이터의 다차원 배열이나 기본형(int, float, long, byte)의 Buffer에 매핑하는 맵입니다. 필요한 만큼만 사용할 출력 항목입니다. Buffer를 사용하는 경우 호출자는 적절한 쓰기 위치를 설정해야 합니다. 다음 중 하나에 해당하는 경우 지도가 비어 있을 수 있습니다. 버퍼 핸들은 출력 텐서 데이터에 사용되거나 출력이 동적으로인 경우에 사용 추론이 완료된 후 호출자는 출력 Tensor 도형을 쿼리해야 합니다. 호출하여 출력 텐서에서 직접 데이터를 가져옵니다 (Tensor.asReadOnlyBuffer()를 통해).
생성 값
IllegalArgumentException inputs가 null이거나 비어 있는 경우 outputs가 다음인 경우 null을 반환합니다.