Interpreter

class final publik Penerjemah

Class pengemudi untuk mendorong inferensi model dengan TensorFlow Lite.

Catatan: Jika Anda tidak membutuhkan akses ke "eksperimental" Fitur API di bawah ini, lebih suka menggunakan InterpreterApi dan InterpreterFactory daripada menggunakan Interpreter secara langsung.

Interpreter mengenkapsulasi model TensorFlow Lite terlatih, dengan operasi dieksekusi untuk inferensi model.

Misalnya, jika model hanya mengambil satu input dan hanya menampilkan satu output:

try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.run(input, output);
 }
 

Jika model menggunakan beberapa input atau 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);
 }
 

Jika model mengambil atau menghasilkan tensor string:

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);
 }
 

Perhatikan bahwa ada perbedaan antara bentuk [] dan bentuk[1]. Untuk tensor string skalar output:

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);
 

Urutan input dan output ditentukan saat mengonversi model TensorFlow ke TensorFlowLite dengan Toco, serta bentuk default input-nya.

Ketika input diberikan sebagai array (multi-dimensi), tensor input yang sesuai akan secara implisit diubah ukurannya sesuai dengan bentuk {i>array<i} itu. Jika input diberikan sebagai Buffer tidak perlu mengubah ukuran secara implisit; pemanggil harus memastikan bahwa ukuran byte Buffer cocok dengan tensor yang terkait, atau yang terlebih dahulu mengubah ukuran tensor melalui resizeInput(int, int[]). Informasi bentuk dan jenis tensor dapat diperoleh melalui class Tensor, yang tersedia melalui getInputTensor(int) dan getOutputTensor(int).

PERINGATAN: Instance Interpreter tidak aman untuk thread. Interpreter memiliki resource yang harus dibebaskan secara eksplisit dengan memanggil close()

Library TFLite dibuat berdasarkan NDK API 19. Fitur ini mungkin berfungsi untuk API Android dengan level di bawah 19, tetapi tidak dijamin.

Class Bertingkat

class Interpreter.Options Class opsi untuk mengontrol perilaku penafsir runtime.

Konstruktor Publik

Penerjemah(modelFile File)
Melakukan inisialisasi Interpreter.
Penerjemah(opsi File modelFile, Interpreter.Options)
Melakukan inisialisasi Interpreter dan menentukan opsi untuk menyesuaikan perilaku penafsir.
Penerjemah(ByteBuffer byteBuffer)
Melakukan inisialisasi Interpreter dengan ByteBuffer file model.
Penerjemah(opsi ByteBuffer byteBuffer, Interpreter.Options)
Melakukan inisialisasi Interpreter dengan ByteBuffer dari file model dan sekumpulan Interpreter.Options kustom.

Metode Publik

void
allocateTensors()
Secara eksplisit mengupdate alokasi untuk semua tensor, jika diperlukan.
void
close()
Melepaskan resource yang terkait dengan instance InterpreterApi.
int
getInputIndex(String opName)
Mendapatkan indeks input berdasarkan nama op input.
Tensor
getInputTensor(int inputIndex)
Mendapatkan Tensor yang terkait dengan indeks input yang disediakan.
int
getInputTensorCount()
Mendapatkan jumlah tensor input.
Tensor
getInputTensorFromSignature(String inputName, String signatureKey)
Mendapatkan Tensor yang terkait dengan nama input dan nama metode tanda tangan yang diberikan.
Panjang
getLastNativeInferenceDurationNanoseconds()
Menampilkan waktu inferensi native.
int
getOutputIndex(opName String)
Mendapatkan indeks output berdasarkan nama op output.
Tensor
getOutputTensor(int outputIndex)
Mendapatkan Tensor yang terkait dengan indeks output yang diberikan.
int
getOutputTensorCount()
Mendapatkan jumlah Tensor output.
Tensor
getOutputTensorFromSignature(String outputName, String signatureKey)
Mendapatkan Tensor yang terkait dengan nama output yang diberikan dalam metode tanda tangan tertentu.
String[]
getSignatureInputs(String signatureKey)
Mendapatkan daftar input SignatureDef untuk metode signatureKey.
String[]
getSignatureKeys()
Mendapatkan daftar nama metode yang diekspor SignatureDef yang tersedia di model.
String[]
getSignatureOutputs(String signatureKey)
Mendapatkan daftar output SignatureDef untuk me