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 | 런타임 인터프리터 동작을 제어하기 위한 옵션 클래스입니다. |
공개 생성자
공개 메서드
void |
allocateTensors()
필요한 경우 모든 텐서의 할당을 명시적으로 업데이트합니다.
|
void |
close()
InterpreterApi 인스턴스와 연결된 리소스를 해제합니다. |
int | |
Tensor |
getInputTensor(int inputIndex)
제공된 입력 색인과 연결된 텐서를 가져옵니다.
|
int |
getInputTensorCount()
입력 텐서의 수를 가져옵니다.
|
Tensor |
getInputTensorFromSignature(String inputName, String signatureKey)
제공된 입력 이름 및 서명 메서드 이름과 연결된 텐서를 가져옵니다.
|
긴 버전 |
getLastNativeInferenceDurationNanoseconds()
네이티브 추론 타이밍을 반환합니다.
|
int | |
Tensor |
getOutputTensor(int outputIndex)
제공된 출력 색인과 연결된 텐서를 가져옵니다.
|
int |
getOutputTensorCount()
출력 텐서 수를 가져옵니다.
|
Tensor |
getOutputTensorFromSignature(String outputName, String signatureKey)
특정 서명 메서드에서 제공된 출력 이름과 연결된 텐서를 가져옵니다.
|
String[] | |
String[] |
getSignatureKeys()
모델에서 사용할 수 있는 SignatureDef의 내보낸 메서드 이름의 목록을 가져옵니다.
|
String[] | |
void |
resetVariableTensors()
고급: 모든 변수 텐서를 기본값으로 재설정합니다.
|
void |
resizeInput(int idx, int[] dims, boolean strict)
네이티브 모델의 idx번째 입력을 지정된 어둡게로 조절합니다.
|
void |
resizeInput(int idx, int[] dims)
네이티브 모델의 idx번째 입력을 지정된 어둡게로 조절합니다.
|
void | |
void |
runForMultipleInputsOutputs(Object[] input, Map<Integer, Object> 출력)
모델이 여러 입력을 사용하거나 여러 출력을 반환하는 경우 모델 추론을 실행합니다.
|
void |
runSignature(Map<String, Object> input, Map<String, Object> 출력)
runSignature(Map, Map, String) 와 동일하지만 signatureKey를 전달할 필요가 없습니다.
모델에 SignatureDef가 하나 있다고 가정합니다. |
void | |
void |
setCancelled(불리언 취소됨)
고급:
run(Object, Object) 호출 도중에 추론을 중단합니다. |
상속된 메서드
공개 생성자
<ph type="x-smartling-placeholder"></ph> 공개 를 통해 개인정보처리방침을 정의할 수 있습니다. 인터프리터 (파일 modelFile)
Interpreter
를 초기화합니다.
매개변수
modelFile | 선행 학습된 TF Lite 모델의 파일입니다. |
---|
생성 값
IllegalArgumentException | modelFile 가 유효한 TensorFlow Lite를 인코딩하지 않는 경우
있습니다.
|
---|
<ph type="x-smartling-placeholder"></ph> 공개 를 통해 개인정보처리방침을 정의할 수 있습니다. 인터프리터 (File modelFile, Interpreter.Options options)
Interpreter
를 초기화하고 인터프리터 동작을 맞춤설정하는 옵션을 지정합니다.
매개변수
modelFile | 선행 학습된 TF Lite 모델의 파일 |
---|---|
옵션 | 인터프리터 동작을 맞춤설정하는 옵션 모음 |
생성 값
IllegalArgumentException | modelFile 가 유효한 TensorFlow Lite를 인코딩하지 않는 경우
있습니다.
|
---|
<ph type="x-smartling-placeholder"></ph> 공개 를 통해 개인정보처리방침을 정의할 수 있습니다. 인터프리터 (ByteBuffer byteBuffer)
모델 파일의 ByteBuffer
로 Interpreter
를 초기화합니다.
ByteBuffer는 Interpreter
생성 후 수정해서는 안 됩니다. 이
ByteBuffer
는 모델 파일을 메모리 매핑하는 MappedByteBuffer
또는
모델의 바이트 콘텐츠를 포함하는 nativeOrder()의 직접 ByteBuffer
입니다.
매개변수
byteBuffer |
---|
생성 값
IllegalArgumentException | byteBuffer 가 MappedByteBuffer 도 아니고
nativeOrder의 직접 ByteBuffer 입니다.
|
---|
<ph type="x-smartling-placeholder"></ph> 공개 를 통해 개인정보처리방침을 정의할 수 있습니다. 인터프리터 (ByteBuffer byteBuffer, Interpreter.Options 옵션)
모델 파일의 ByteBuffer
와Interpreter
맞춤 Interpreter.Options
입니다.
ByteBuffer
는 Interpreter
생성 후 수정해서는 안 됩니다. ByteBuffer
는 메모리 매핑되는 MappedByteBuffer
일 수 있습니다.
모델 파일 또는 바이트 콘텐츠가 포함된 nativeOrder()의 직접적인 ByteBuffer
인코더-디코더 아키텍처를
매개변수
byteBuffer | |
---|---|
옵션 |
생성 값
IllegalArgumentException | byteBuffer 가 MappedByteBuffer 도 아니고
nativeOrder의 직접 ByteBuffer 입니다.
|
---|
공개 메서드
<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...
참고: 일부 그래프에는 동적으로 형태의 출력이 있으며, 이 경우 출력 형태가 완전히 전파됩니다
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. 닫기 ()
InterpreterApi
인스턴스와 연결된 리소스를 해제합니다.
<ph type="x-smartling-placeholder"></ph> 공개 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getInputIndex (문자열 opName)
입력의 작업 이름이 주어진 입력의 색인을 가져옵니다.
매개변수
opName |
---|
<ph type="x-smartling-placeholder"></ph> 공개 Tensor getInputTensor (int inputIndex)
제공된 입력 색인과 연결된 텐서를 가져옵니다.
매개변수
inputIndex |
---|
<ph type="x-smartling-placeholder"></ph> 공개 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getInputTensorCount ()
입력 텐서의 수를 가져옵니다.
<ph type="x-smartling-placeholder"></ph> 공개 Tensor getInputTensorFromSignature (문자열 inputName, String signatureKey)
제공된 입력 이름 및 서명 메서드 이름과 연결된 텐서를 가져옵니다.
경고: 이 API는 실험용이며 변경될 수 있습니다.
매개변수
inputName | 서명에 이름을 입력합니다. |
---|---|
signatureKey | SignatureDef를 식별하는 서명 키로, 모델에 서명이 1개 있습니다 |
생성 값
IllegalArgumentException | inputName 또는 signatureKey 가 null이거나 비어 있는 경우
잘못된 이름이 있을 수 있습니다.
|
---|
<ph type="x-smartling-placeholder"></ph> 공개 긴 형식 getLastNativeInferenceDurationNanoseconds ()
네이티브 추론 타이밍을 반환합니다.
<ph type="x-smartling-placeholder"></ph> 공개 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getOutputIndex (문자열 opName)
출력의 작업 이름이 주어진 출력의 색인을 가져옵니다.
매개변수
opName |
---|
<ph type="x-smartling-placeholder"></ph> 공개 Tensor getOutputTensor (int outputIndex)
제공된 출력 색인과 연결된 텐서를 가져옵니다.
참고: 추론이 끝날 때까지 출력 텐서 세부정보 (예: 셰이프)가 완전히 채워지지 않을 수 있습니다.
실행됩니다 추론을 실행하기 *전에* 업데이트된 세부정보가 필요한 경우 (예:
출력 텐서 형태를 무효화할 수 있는 입력 텐서)에 대해 allocateTensors()
사용
명시적으로 할당 및 셰이프 전파를 트리거합니다. 출력 모양이 있는 그래프의 경우
출력 셰이프는 입력 *값*에 종속되어 있고
살펴보겠습니다
매개변수
outputIndex |
---|
<ph type="x-smartling-placeholder"></ph> 공개 정수 를 통해 개인정보처리방침을 정의할 수 있습니다. getOutputTensorCount ()
출력 텐서 수를 가져옵니다.
<ph type="x-smartling-placeholder"></ph> 공개 Tensor getOutputTensorFromSignature (문자열 outputName, 문자열 signatureKey)
특정 서명 메서드에서 제공된 출력 이름과 연결된 텐서를 가져옵니다.
참고: 추론이 끝날 때까지 출력 텐서 세부정보 (예: 셰이프)가 완전히 채워지지 않을 수 있습니다.
실행됩니다 추론을 실행하기 *전에* 업데이트된 세부정보가 필요한 경우 (예:
출력 텐서 형태를 무효화할 수 있는 입력 텐서)에 대해 allocateTensors()
사용
명시적으로 할당 및 셰이프 전파를 트리거합니다. 출력 모양이 있는 그래프의 경우
출력 셰이프는 입력 *값*에 종속되어 있고
살펴보겠습니다
경고: 이 API는 실험용이며 변경될 수 있습니다.
매개변수
outputName | 서명의 출력 이름입니다. |
---|---|
signatureKey | SignatureDef를 식별하는 서명 키로, 모델에 서명이 1개 있습니다 |
생성 값
IllegalArgumentException | outputName 또는 signatureKey 이 null이거나
비어 있거나 제공된 이름이 잘못되었습니다.
|
---|
<ph type="x-smartling-placeholder"></ph> 공개 String[] getSignatureInputs (문자열 signatureKey)
signatureKey
메서드의 SignatureDefs 입력 목록을 가져옵니다.
경고: 이 API는 실험용이며 변경될 수 있습니다.
매개변수
signatureKey |
---|
<ph type="x-smartling-placeholder"></ph> 공개 String[] getSignatureKeys ()
모델에서 사용할 수 있는 SignatureDef의 내보낸 메서드 이름의 목록을 가져옵니다.
경고: 이 API는 실험용이며 변경될 수 있습니다.
<ph type="x-smartling-placeholder"></ph> 공개 String[] getSignatureOutputs (문자열 signatureKey)
signatureKey
메서드의 SignatureDefs 출력 목록을 가져옵니다.
경고: 이 API는 실험용이며 변경될 수 있습니다.
매개변수
signatureKey |
---|
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. resetVariableTensors ()
고급: 모든 변수 텐서를 기본값으로 재설정합니다.
변수 텐서에 연결된 버퍼가 없으면 0으로 재설정됩니다.
경고: 이 API는 실험용이며 변경될 수 있습니다.
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. resizeInput (int idx, int[] dims, boolean strict)
네이티브 모델의 idx번째 입력을 지정된 어둡게로 조절합니다.
`strict` 가 True인 경우 알 수 없는 크기만 크기를 조절할 수 있습니다. 알 수 없는 측정기준은 `Tensor.shapeSignature()`에 의해 반환된 배열에 `-1`로 표시됩니다.
매개변수
IDX | |
---|---|
어둡게 | |
엄격 |
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. resizeInput (int idx, int[] dims)
네이티브 모델의 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() 를 통해) |
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. runForMultipleInputsOutputs (객체[] 입력, 맵<정수, 객체> 출력)
모델이 여러 입력을 사용하거나 여러 출력을 반환하는 경우 모델 추론을 실행합니다.
경고: Buffer
가 가능하면 직접 사용하는 것이 좋지만 필수는 아닌 경우 API가 더 효율적입니다.
입력/출력 데이터 유형으로 사용됩니다. Buffer
를 사용하여 피드하고 가져오기를 고려해 보세요.
원시 데이터를 사용하여 성능을
향상시킬 수 있습니다 다음과 같은 구체적인 Buffer
유형은 다음과 같습니다.
지원됨:
ByteBuffer
- 모든 기본 원시 텐서 유형과 호환됩니다.FloatBuffer
- 부동 텐서와 호환됩니다.IntBuffer
- int32 텐서와 호환됩니다.LongBuffer
- int64 텐서와 호환됩니다.
Buffer
가 아닌 배열이나 스칼라 입력으로만 지원됩니다.
참고: inputs
및 outputs
의 개별 요소에 대한 null
값은 다음과 같습니다.
호출자가 버퍼 핸들 상호 운용성을 허용하는 Delegate
를 사용 중인 경우에만 허용됩니다.
이러한 버퍼는 상응하는 입력 또는 출력 Tensor
에 바인딩되었습니다.
매개변수
입력 | 입력 데이터의 배열입니다. 입력은
있습니다. 각 입력은 배열 또는 다차원 배열 또는 Buffer 의
int, float, long 및 byte를 포함하는 기본형을 참조하세요. Buffer 를 사용하는 것이 좋습니다.
는 다차원 배열을 사용해야 하는 반면, 문자열 유형은
입력 경로 Buffer 를 사용하면 모델이 완료될 때까지 콘텐츠가 변경되지 않아야 합니다.
추론이 완료되며 호출자는 Buffer 가 적절한 시점에 있는지 확인해야 합니다.
읽기 위치를 지정해야 합니다. |
---|---|
출력 | 출력 색인을 출력 데이터의 다차원 배열이나 기본형(int, float, long, byte)의 Buffer 에 매핑하는 맵입니다. 필요한 만큼만
사용할 출력 항목입니다. Buffer 를 사용하는 경우 호출자는
적절한 쓰기 위치를 설정해야 합니다. 다음 중 하나에 해당하는 경우 지도가 비어 있을 수 있습니다.
버퍼 핸들은 출력 텐서 데이터에 사용되거나 출력이 동적으로인 경우에 사용
추론이 완료된 후 호출자는 출력 Tensor 도형을 쿼리해야 합니다.
호출하여 출력 텐서에서 직접 데이터를 가져옵니다 (Tensor.asReadOnlyBuffer() 를 통해). |
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. runSignature (매핑<문자열, 객체> 입력, 맵<문자열, 객체> 출력)
runSignature(Map, Map, String)
와 동일하지만 signatureKey를 전달할 필요가 없습니다.
모델에 SignatureDef가 하나 있다고 가정합니다. 모델에 SignatureDef가 두 개 이상 있으면
예외가 발생합니다.
경고: 이 API는 실험용이며 변경될 수 있습니다.
매개변수
입력 | |
---|---|
출력 |
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. runSignature (Map<String, Object> input, Map<String, Object> output, String signatureKey)
signatureKey
를 통해 제공된 SignatureDef를 기반으로 모델 추론을 실행합니다.
허용되는 입력 및 출력에 관한 자세한 내용은 run(Object, Object)
를 참고하세요.
데이터 유형입니다.
경고: 이 API는 실험용이며 변경될 수 있습니다.
매개변수
입력 | SignatureDef의 입력 이름과 입력 객체 매핑입니다. |
---|---|
출력 | SignatureDef의 출력 이름과 출력 데이터의 맵입니다. 다음과 같은 경우 비어 있을 수 있습니다.
호출자는 추론 후 직접 Tensor 데이터를 쿼리하려고 합니다 (예:
출력 셰이프가 동적이거나 출력 버퍼 핸들이 사용되는 경우) |
signatureKey | SignatureDef를 식별하는 서명 키입니다. |
생성 값
IllegalArgumentException | inputs 가 null이거나 비어 있는 경우, outputs 인 경우 또는
signatureKey 가 null이거나 추론을 실행할 때 오류가 발생하는 경우입니다.
|
---|
<ph type="x-smartling-placeholder"></ph> 공개 무효 를 통해 개인정보처리방침을 정의할 수 있습니다. setCancelled (불리언 취소됨)
고급: run(Object, Object)
호출 도중에 추론을 중단합니다.
이 함수가 호출되면 취소 플래그가 true로 설정됩니다. 통역사가
작업 호출 간의 플래그를 확인합니다. true
인 경우 인터프리터가 중지됩니다.
실행할 수 있습니다 인터프리터는 명시적으로 '취소되지 않음'이 될 때까지 취소됨 상태로 유지됩니다. 작성자:
setCancelled(false)
경고: 이 API는 실험용이며 변경될 수 있습니다.
매개변수
취소됨 | true 는 최선의 방식으로 추론을 취소합니다. false 부터
재개하세요. |
---|
생성 값
IllegalStateException | 인터프리터가 취소 가능한 메서드로 초기화되지 않은 경우 이 기능은 기본적으로 사용 중지되어 있습니다. |
---|