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(opsi File modelFile, Interpreter.Options)
Melakukan inisialisasi
Interpreter dan menentukan opsi untuk menyesuaikan perilaku penafsir. |
|
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 | |
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 | |
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[] |