Interpreter

パブリック ファイナル クラス インタープリタ

TensorFlow Lite を使用してモデル推論を駆動するドライバクラス。

注: 「試験運用版」の使用する API 機能は以下のとおりです。 InterpreterApi と InterpreterFactory の使用を促進します。

Interpreter は、事前トレーニング済みの TensorFlow Lite モデルをカプセル化します。このモデルでは、 モデルの推論のために実行されます

たとえば、モデルが 1 つの入力のみを受け取り、1 つの出力のみを返すとします。

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 に変換するときに入力と出力の順序が決まります Toco を使用してモデルを作成します。

入力を(多次元)配列として指定すると、対応する入力テンソルが その配列の形状に従って暗黙的にサイズが変更されます。入力が Buffer として指定されている場合 暗黙的なサイズ変更は行われません。呼び出し元は、Buffer バイトのサイズを 対応するテンソルに一致するか、最初に resizeInput(int, int[]) でテンソルのサイズを変更するかのいずれかの方法が考えられます。テンソルの形状と型の情報は、getInputTensor(int)getOutputTensor(int) を介して利用可能な Tensor クラスを介して取得できます。

警告:Interpreter インスタンスはスレッドセーフではありませんInterpreter close() を呼び出して明示的に解放する必要があるリソースを所有している

TFLite ライブラリは、NDK API 19 に対してビルドされています。Android API レベルが 19 未満の場合は、 保証されるものではありません

ネストされたクラス

クラス Interpreter.Options ランタイム インタープリタの動作を制御するオプション クラス。

パブリック コンストラクタ

インタープリタFile modelFile)
Interpreter を初期化します。
インタープリタファイル modelFile、Interpreter.Options オプション)
Interpreter を初期化し、インタープリタの動作をカスタマイズするためのオプションを指定します。
インタープリタByteBuffer byteBuffer)
モデルファイルの ByteBufferInterpreter を初期化します。
インタープリタByteBuffer byteBuffer、Interpreter.Options オプション)
モデルファイルの ByteBuffer と次の一連のセットで Interpreter を初期化します。 カスタム Interpreter.Options

パブリック メソッド

無効
allocateTensors()
必要に応じて、すべてのテンソルの割り当てを明示的に更新します。
無効
close()
InterpreterApi インスタンスに関連付けられているリソースを解放します。
整数
getInputIndexString opName)
指定された入力の op 名で指定された入力のインデックスを取得します。
Tensor
getInputTensor(int inputIndex)
指定された入力インデックスに関連付けられたテンソルを取得します。
整数
getInputTensorCount()
入力テンソルの数を取得します。
Tensor
getInputTensorFromSignatureString inputName, String signatureKey)
指定された入力名と署名メソッド名に関連付けられたテンソルを取得します。
長め
getLastNativeInferenceDurationNanoseconds()
ネイティブ推論のタイミングを返します。
整数
getOutputIndexString opName)
指定された出力の op 名を指定して、出力のインデックスを取得します。
Tensor
getOutputTensor(int outputIndex)
指定された出力インデックスに関連付けられたテンソルを取得します。
整数
getOutputTensorCount()
出力テンソルの数を取得します。
Tensor
getOutputTensorFromSignatureString outputName, String signatureKey)