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 | ランタイム インタープリタの動作を制御するオプション クラス。 |
パブリック コンストラクタ
インタープリタ(ファイル modelFile、Interpreter.Options オプション)
Interpreter を初期化し、インタープリタの動作をカスタマイズするためのオプションを指定します。 |
|
パブリック メソッド
無効 |
allocateTensors()
必要に応じて、すべてのテンソルの割り当てを明示的に更新します。
|
無効 |
close()
InterpreterApi インスタンスに関連付けられているリソースを解放します。 |
整数 | |
Tensor |
getInputTensor(int inputIndex)
指定された入力インデックスに関連付けられたテンソルを取得します。
|
整数 |
getInputTensorCount()
入力テンソルの数を取得します。
|
Tensor |
getInputTensorFromSignature(String inputName, String signatureKey)
指定された入力名と署名メソッド名に関連付けられたテンソルを取得します。
|
長め |
getLastNativeInferenceDurationNanoseconds()
ネイティブ推論のタイミングを返します。
|
整数 | |
Tensor |
getOutputTensor(int outputIndex)
指定された出力インデックスに関連付けられたテンソルを取得します。
|
整数 |
getOutputTensorCount()
出力テンソルの数を取得します。
|
Tensor |
getOutputTensorFromSignature(String outputName, String signatureKey)
特定のシグネチャ メソッドで指定された出力名に関連付けられたテンソルを取得します。
|
String[] | |
String[] |
getSignatureKeys()
モデルで使用可能な SignatureDef のエクスポートされたメソッド名のリストを取得します。
|
String[] | |
無効 |
resetVariableTensors()
Advanced: すべての変数テンソルをデフォルト値にリセットします。
|
無効 |
resizeInput(int idx, int[] dims, boolean strict)
ネイティブ モデルの idx 番目の入力を、指定されたディメンションに変更します。
|
無効 |
resizeInput(int idx, int[] dims)
ネイティブ モデルの idx 番目の入力を、指定されたディメンションに変更します。
|
無効 | |
無効 |
runForMultipleInputsOutputs(Object[]inputs, Map<Integer, Object> outputs)
モデルが複数の入力を受け取る場合、または複数の出力を返す場合は、モデルの推論を実行します。
|
無効 |
runSignature(Map<String, Object> input, Map<String, Object> outputs)
runSignature(Map, Map, String) と同じですが、signatureKey を渡す必要はありません。
モデルに 1 つの 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)
モデルファイルの ByteBuffer
で Interpreter
を初期化します。
Interpreter
の構築後は ByteBuffer を変更しないでください。「
ByteBuffer
は、モデルファイルをメモリマップする MappedByteBuffer
か、
モデルのバイト コンテンツを含む nativeOrder() の直接 ByteBuffer
。
パラメータ
byteBuffer |
---|
例外
IllegalArgumentException | byteBuffer が MappedByteBuffer でもなくでも
nativeOrder の直接の ByteBuffer 。
|
---|
<ph type="x-smartling-placeholder"></ph> 一般公開 インタープリタ (ByteBuffer byteBuffer、Interpreter.Options オプション)
モデルファイルの ByteBuffer
と次の一連のセットで Interpreter
を初期化します。
カスタム Interpreter.Options
。
Interpreter
の構築後に ByteBuffer
を変更しないでください。ByteBuffer
は、メモリマップする MappedByteBuffer
のいずれかです。
モデルファイル、またはバイトの内容を含む nativeOrder() の直接 ByteBuffer
モデルです。
パラメータ
byteBuffer | |
---|---|
オプション |
例外
IllegalArgumentException | byteBuffer が MappedByteBuffer でもなくでも
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
またはスカラー入力としてではなく、配列としてのみサポートされています。
注: inputs
と outputs
の個別の要素の 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<String, Object> input, Map<String, Object> 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 イベントで初期化されていない場合 デフォルトでオフになっています。 |
---|