InterpreterApi

公開インターフェース InterpreterApi
既知の間接的なサブクラス

TensorFlow Lite モデル インタープリタのインターフェース(試験運用版のメソッドを除く)。

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

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

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

入力を(多次元)配列として指定すると、対応する入力テンソルが その配列の形状に従って暗黙的にサイズが変更されます。入力が 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ファイル modelFile、InterpreterApi.Options オプション)
指定されたモデルとオプションを使用して、InterpreterApi インスタンスを構築します。
静的 InterpreterApi
createByteBuffer byteBuffer、InterpreterApi.Options options)
指定されたモデルとオプションを使用して、InterpreterApi インスタンスを構築します。
抽象的 整数
getInputIndexString opName)
指定された入力の op 名で指定された入力のインデックスを取得します。
抽象的 Tensor
getInputTensor(int inputIndex)
指定された入力インデックスに関連付けられたテンソルを取得します。
抽象的 整数
getInputTensorCount()
入力テンソルの数を取得します。
抽象的 長め
getLastNativeInferenceDurationNanoseconds()
ネイティブ推論のタイミングを返します。
抽象的 整数
getOutputIndexString opName)
指定された出力の op 名を指定して、出力のインデックスを取得します。
抽象的 Tensor
getOutputTensor(int outputIndex)
指定された出力インデックスに関連付けられたテンソルを取得します。
抽象的 整数