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)
指定された出力インデックスに関連付けられたテンソルを取得します。
抽象的 整数
getOutputTensorCount()
出力テンソルの数を取得します。
抽象的 無効
resizeInput(int idx, int[] dims, boolean strict)
ネイティブ モデルの idx 番目の入力を、指定されたディメンションに変更します。
抽象的 無効
resizeInput(int idx, int[] dims)
ネイティブ モデルの idx 番目の入力を、指定されたディメンションに変更します。
抽象的 無効
runオブジェクト入力、オブジェクト出力)
モデルが 1 つの入力のみを受け取り、1 つの出力のみを提供する場合に、モデルの推論を実行します。
抽象的 無効
runForMultipleInputsOutputs(Object[]inputs, Map<IntegerObject> outputs)
モデルが複数の入力を受け取る場合、または複数の出力を返す場合は、モデルの推論を実行します。

継承されるメソッド

パブリック メソッド

<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 をご覧ください。 作成 ファイル modelFile、InterpreterApi.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)

指定された入力の op 名で指定された入力のインデックスを取得します。

パラメータ
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)

指定された出力の op 名を指定して、出力のインデックスを取得します。

パラメータ
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> 一般公開 抽象的 無効 実行 オブジェクト入力、オブジェクト出力)

モデルが 1 つの入力のみを受け取り、1 つの出力のみを提供する場合に、モデルの推論を実行します。

警告: Buffer を使用すると(直接的な方法が望ましいですが、必須ではありません)、API はより効率的です。 入出力データ型として使用されます。Buffer を使用してフィードや取得を行うことをご検討ください プリミティブ データを保存します。次の具象 Buffer 型は次のとおりです。 supported:

  • ByteBuffer - 基になるプリミティブ型の Tensor 型と互換性があります。
  • 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 Object[] 入力、Map<Integer, Object> の出力)

モデルが複数の入力を受け取る場合、または複数の出力を返す場合は、モデルの推論を実行します。

警告: Buffer(直接的であることが望ましいが、必須ではない)の場合、API はより効率的です。 入出力データ型として使用されます。Buffer を使用してフィードや取得を行うことをご検討ください プリミティブ データを保存します。次の具象 Buffer 型は次のとおりです。 supported:

  • ByteBuffer - 基になるプリミティブ型の Tensor 型と互換性があります。
  • FloatBuffer - 浮動小数点テンソルと互換性があります。
  • IntBuffer - int32 テンソルと互換性があります。
  • LongBuffer - int64 テンソルと互換性があります。
で確認できます。 ブール値型は、Buffer またはスカラー入力としてではなく、配列としてのみサポートされています。

注: inputsoutputs の個別の要素の null 値は、 呼び出し元が、バッファ ハンドルの相互運用を許可する Delegate を使用している場合にのみ許可されます。 対応する入力または出力の Tensor にバインドされていること。

パラメータ
入力 入力データの配列。入力は、terraform plan または terraform apply の モデルです。各入力は、配列または多次元配列、あるいは次の Buffer です。 int、float、long、byte などのプリミティブ型があります。Buffer をおすすめします。 文字列型では(多次元の)配列 確認します。Buffer を使用すると、モデルがモデルになるまでコンテンツは変更されません。 推論が行われます。呼び出し元は、Buffer が適切であることを確認する必要があります。 読み取り位置です
結果 出力インデックスを、出力データの多次元配列またはプリミティブ型の Buffer(int、float、long、byte など)にマッピングするマップ。必要なのは、 使用されます。Buffer を使用する場合、呼び出し元は、 適切な書き込み位置が設定されていることを確認します。次のいずれかに該当する場合、マップは空になることがあります。 バッファ ハンドルが出力テンソルデータに使用される場合や、出力が動的に 推論が実行された後、呼び出し元は出力 Tensor シェイプをクエリする必要があります。 (Tensor.asReadOnlyBuffer() を介して)出力テンソルからデータを直接取得します。
例外
IllegalArgumentException inputs が null または空の場合、outputs が の場合 null、または推論の実行中にエラーが発生した場合にスローされます。