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)
特定のシグネチャ メソッドで指定された出力名に関連付けられたテンソルを取得します。
String[]
getSignatureInputsString signatureKey)
メソッド signatureKey の SignatureDefs 入力のリストを取得します。
String[]
getSignatureKeys()
モデルで使用可能な SignatureDef のエクスポートされたメソッド名のリストを取得します。
String[]
getSignatureOutputsString signatureKey)
メソッド signatureKey の SignatureDefs 出力のリストを取得します。
無効
resetVariableTensors()
Advanced: すべての変数テンソルをデフォルト値にリセットします。
無効
resizeInput(int idx, int[] dims, boolean strict)
ネイティブ モデルの idx 番目の入力を、指定されたディメンションに変更します。
無効
resizeInput(int idx, int[] dims)
ネイティブ モデルの idx 番目の入力を、指定されたディメンションに変更します。
無効
runオブジェクト入力、オブジェクト出力)
モデルが 1 つの入力のみを受け取り、1 つの出力のみを提供する場合に、モデルの推論を実行します。
無効
runForMultipleInputsOutputs(Object[]inputs, Map<IntegerObject> outputs)
モデルが複数の入力を受け取る場合、または複数の出力を返す場合は、モデルの推論を実行します。
無効
runSignatureMap<StringObject> input, Map<StringObject> outputs)
runSignature(Map, Map, String) と同じですが、signatureKey を渡す必要はありません。 モデルに 1 つの SignatureDef があると仮定します。
無効
runSignature(Map<StringObject> input, Map<StringObject> outputs, StringsignatureKey)
signatureKey を通じて指定された SignatureDef に基づいてモデル推論を実行します。
無効
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> 一般公開 インタープリタ ファイル modelFile、Interpreter.Options オプション)

Interpreter を初期化し、インタープリタの動作をカスタマイズするためのオプションを指定します。

パラメータ
modelFile 事前トレーニング済みの TF Lite モデルのファイル
オプション インタープリタの動作をカスタマイズするための一連のオプション
例外
IllegalArgumentException modelFile が有効な TensorFlow Lite をエンコードしない場合 モデルです。

<ph type="x-smartling-placeholder"></ph> 一般公開 インタープリタ ByteBuffer byteBuffer)

モデルファイルの ByteBufferInterpreter を初期化します。

Interpreter の構築後は ByteBuffer を変更しないでください。「 ByteBuffer は、モデルファイルをメモリマップする MappedByteBuffer か、 モデルのバイト コンテンツを含む nativeOrder() の直接 ByteBuffer

パラメータ
byteBuffer
例外
IllegalArgumentException byteBufferMappedByteBuffer でもなくでも nativeOrder の直接の ByteBuffer

<ph type="x-smartling-placeholder"></ph> 一般公開 インタープリタ ByteBuffer byteBuffer、Interpreter.Options オプション)

モデルファイルの ByteBuffer と次の一連のセットで Interpreter を初期化します。 カスタム Interpreter.Options

Interpreter の構築後に ByteBuffer を変更しないでください。ByteBuffer は、メモリマップする MappedByteBuffer のいずれかです。 モデルファイル、またはバイトの内容を含む nativeOrder() の直接 ByteBuffer モデルです。

パラメータ
byteBuffer
オプション
例外
IllegalArgumentException byteBufferMappedByteBuffer でもなくでも 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)

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

パラメータ
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 (String inputName, String signatureKey)

指定された入力名と署名メソッド名に関連付けられたテンソルを取得します。

警告: これは試験運用版の API であり、変更される可能性があります。

パラメータ
inputName 署名の名前を入力します。
signatureKey SignatureDef を識別する署名キー。モデルに次のものがある場合は null にできます。 できます。
例外
IllegalArgumentException inputName または signatureKey が null または空の場合、 無効な名前が入力されています。

<ph type="x-smartling-placeholder"></ph> 一般公開 長め をご覧ください。 getLastNativeInferenceDurationNanoseconds ()

ネイティブ推論のタイミングを返します。

<ph type="x-smartling-placeholder"></ph> 一般公開 整数 getOutputIndex 文字列 opName)

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

パラメータ
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 (String outputName, String signatureKey)

特定のシグネチャ メソッドで指定された出力名に関連付けられたテンソルを取得します。

注: 出力テンソルの詳細(形状など)は、推論が完了するまでは完全に入力されないことがあります。 実行されます。推論を実行する *前* に詳細を更新する必要がある場合(例: 入力テンソル(出力テンソルの形状が無効になる場合があります)については、allocateTensors() を使用して、 割り当てとシェイプの伝播を明示的にトリガーできます。出力の形状を持つグラフでは 依存している場合、出力の形状は入力値に依存し、 推論を実行できます

警告: これは試験運用版の API であり、変更される可能性があります。

パラメータ
outputName 署名の出力名。
signatureKey SignatureDef を識別する署名キー。モデルに次のものがある場合は null にできます。 できます。
例外
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 ()

Advanced: すべての変数テンソルをデフォルト値にリセットします。

変数のテンソルにバッファが関連付けられていない場合、変数のテンソルは 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> 一般公開 無効 実行 オブジェクト入力、オブジェクト出力)

モデルが 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() を使用)。

<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() を介して)出力テンソルからデータを直接取得します。

<ph type="x-smartling-placeholder"></ph> 一般公開 無効 runSignature Map <String, Object> 入力、Map<String, Object> output)

runSignature(Map, Map, String) と同じですが、signatureKey を渡す必要はありません。 モデルに 1 つの SignatureDef があると仮定します。モデルに複数の SignatureDef がある場合、 例外をスローします。

警告: これは試験運用版の API であり、変更される可能性があります。

パラメータ
入力
結果

<ph type="x-smartling-placeholder"></ph> 一般公開 無効 runSignature Map<StringObject> input, Map<StringObject> outputs, String signatureKey)

signatureKey を通じて指定された SignatureDef に基づいてモデル推論を実行します。

許可される入力と出力の詳細については、run(Object, Object) をご覧ください 説明します。

警告: これは試験運用版の API であり、変更される可能性があります。

パラメータ
入力 SignatureDef の入力名から入力オブジェクトへのマップ。
結果 SignatureDef の出力名から出力データへのマップ。値が 0 呼び出し元は、推論の直後に 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 インタープリタが cancellable イベントで初期化されていない場合 デフォルトでオフになっています。