公開最終課
翻譯模式
使用 TensorFlow Lite 提升模型推論能力的驅動程式類別。
注意:如果您不需要任何「實驗功能」的存取權API 功能,建議使用 TranslateerApi 和 TranslateerFactory,不要直接使用 Translateer
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[])
調整張量Tensor 形狀和類型資訊可透過 Tensor
類別取得,可透過 getInputTensor(int)
和 getOutputTensor(int)
取得。
警告:Interpreter
執行個體並非執行緒安全。Interpreter
擁有透過叫用 close()
時「必須」明確釋出的資源
TFLite 程式庫是以 NDK API 19 為基礎建構而成。可能適用於低於 19 的 Android API 級別 但不保證一定如此
巢狀類別
類別 | Interpreter.Options | 用於控制執行階段解譯器行為的選項類別。 |
公用建構函式
公用方法
void |
allocateTensors()
視需要明確更新所有張量的配置。
|
void |
close()
釋出與
InterpreterApi 執行個體相關聯的資源。 |
攔截 | |
Tensor |
getInputTensor(int inputIndex)
取得與所提供輸入索引相關聯的 Tensor。
|
攔截 |
getInputTensorCount()
取得輸入張量。
|
Tensor | |
長 |
getLastNativeInferenceDurationNanoseconds()
傳回原生推論時間。
|
攔截 | |
Tensor |
getOutputTensor(int outputIndex)
取得與提供的輸出索引相關聯的 Tensor。
|
攔截 |
getOutputTensorCount()
取得輸出 Tensor 的數量。
|
Tensor | |
String[] | |
String[] |
getSignatureKeys()
取得模型中可用的 SignatureDef 匯出方法名稱清單。
|
String[] | |
void |
resetVariableTensors()
進階:將所有變數張量重設為預設值。
|
void |