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  Interpreterdan menentukan opsi untuk menyesuaikan perilaku penafsir. | |
| 
Penerjemah(opsi ByteBuffer byteBuffer, Interpreter.Options)
                
                   Melakukan inisialisasi  InterpreterdenganByteBufferdari file model dan sekumpulanInterpreter.Optionskustom. | 
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[] | 
getSignatureOutputs(String signatureKey)
                
                   Mendapatkan daftar output SignatureDef untuk metode  signatureKey. | 
| void | 
resetVariableTensors()
                
                   Lanjutan: Mereset semua tensor variabel ke nilai default. | 
| void | 
resizeInput(int idx, int[] dims, boolean strict)
                
                   Mengubah ukuran input idx-th model native ke redup yang diberikan. | 
| void | 
resizeInput(int idx, int[] dims)
                
                   Mengubah ukuran input idx-th model native ke redup yang diberikan. | 
| void | |
| void | 
runForMultipleInputsOutputs(input Object[], output Map<Integer, Object>)
                
                   Menjalankan inferensi model jika model mengambil beberapa input, atau menampilkan beberapa output. | 
| void | 
runSignature(Map<String, Object> input, Map<String, Objek> output)
                
                   Sama seperti  runSignature(Map, Map, String)tetapi tidak memerlukan penerusan signatureKey,
 dengan asumsi model memiliki satu SignatureDef. | 
| void | |
| void | 
setCancelled(boolean dibatalkan)
                
                   Lanjutan: Mengganggu inferensi saat panggilan ke  run(Object, Object). | 
Metode Turunan
Konstruktor Publik
publik Penerjemah (File modelFile)
Melakukan inisialisasi Interpreter.
Parameter
| modelFile | File model TF Lite terlatih. | 
|---|
Menampilkan
| IllegalArgumentException | jika modelFiletidak mengenkode TensorFlow Lite yang valid
     model transformer. | 
|---|
publik Penerjemah (File modelFile, opsi Interpreter.Options)
Melakukan inisialisasi Interpreter dan menentukan opsi untuk menyesuaikan perilaku penafsir.
Parameter
| modelFile | file model TF Lite terlatih | 
|---|---|
| opsi | sekumpulan opsi untuk menyesuaikan perilaku penerjemah | 
Menampilkan
| IllegalArgumentException | jika modelFiletidak mengenkode TensorFlow Lite yang valid
     model transformer. | 
|---|
publik Penerjemah (ByteBuffer byteBuffer)
Menginisialisasi Interpreter dengan ByteBuffer file model.
 
ByteBuffer tidak boleh diubah setelah pembuatan Interpreter. Tujuan
 ByteBuffer dapat berupa MappedByteBuffer yang memetakan file model, atau
 ByteBuffer langsung dari nativeOrder() yang berisi konten byte dari suatu model.
Parameter
| byteBuffer | 
|---|
Menampilkan
| IllegalArgumentException | jika byteBufferbukanMappedByteBufferatauByteBufferlangsung dari nativeOrder. | 
|---|
publik Penerjemah (ByteBuffer byteBuffer, opsi Interpreter.Options)
Melakukan inisialisasi Interpreter dengan ByteBuffer dari file model dan sekumpulan
 Interpreter.Options kustom.
 
ByteBuffer tidak boleh diubah setelah pembuatan Interpreter. ByteBuffer dapat berupa MappedByteBuffer yang dipetakan memori
 file model, atau ByteBuffer langsung dari nativeOrder() yang berisi konten byte
 dari suatu model.
Parameter
| byteBuffer | |
|---|---|
| opsi | 
Menampilkan
| IllegalArgumentException | jika byteBufferbukanMappedByteBufferatauByteBufferlangsung dari nativeOrder. | 
|---|
Metode Publik
publik kosong allocateTensors ()
Secara eksplisit mengupdate alokasi untuk semua tensor, jika diperlukan.
Ini akan menyebarkan bentuk dan alokasi memori untuk tensor dependen menggunakan input Tensor shape(s) seperti yang diberikan.
Catatan: Panggilan ini *murni opsional*. Alokasi tensor akan otomatis terjadi selama eksekusi jika ada tensor input yang diubah ukurannya. Panggilan ini paling berguna dalam menentukan bentuk untuk tensor output apa pun sebelum mengeksekusi grafik, misalnya,
 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...Catatan: Beberapa grafik memiliki output yang berbentuk dinamis, dalam hal ini bentuk output mungkin tidak sepenuhnya disebarkan hingga inferensi dijalankan.
publik kosong tutup ()
Melepaskan resource yang terkait dengan instance InterpreterApi. 
publik Int getInputIndex (String opName)
Mendapatkan indeks input berdasarkan nama op input.
Parameter
| opName | 
|---|
publik Tensor getInputTensor (int inputIndex)
Mendapatkan Tensor yang terkait dengan indeks input yang disediakan.
Parameter
| inputIndex | 
|---|
publik Int getInputTensorCount ()
Mendapatkan jumlah tensor input.
publik Tensor getInputTensorFromSignature (String inputName, String signatureKey)
Mendapatkan Tensor yang terkait dengan nama input dan nama metode tanda tangan yang diberikan.
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
Parameter
| inputName | Nama input dalam tanda tangan. | 
|---|---|
| signatureKey | Kunci tanda tangan yang mengidentifikasi SignatureDef, bisa bernilai null jika model memiliki satu tanda tangan. | 
Menampilkan
| IllegalArgumentException | jika inputNameatausignatureKeyadalah null atau kosong,
     atau nama yang diberikan tidak valid. | 
|---|
publik Int getOutputIndex (String opName)
Mendapatkan indeks output berdasarkan nama op output.
Parameter
| opName | 
|---|
publik Tensor getOutputTensor (int outputIndex)
Mendapatkan Tensor yang terkait dengan indeks output yang diberikan.
Catatan: Detail tensor output (misalnya, bentuk) mungkin tidak terisi sepenuhnya hingga setelah inferensi
 dieksekusi. Jika Anda memerlukan detail yang diperbarui *sebelum* menjalankan inferensi (mis., setelah mengubah ukuran
 tensor input, yang dapat membatalkan bentuk tensor output), gunakan allocateTensors() untuk
 secara eksplisit memicu alokasi 
dan propagasi bentuk. Perhatikan bahwa, untuk grafik dengan bentuk output
 bergantung pada *nilai* input, bentuk output mungkin tidak ditentukan sepenuhnya sampai
 menjalankan inferensi.
Parameter
| outputIndex | 
|---|
publik Int getOutputTensorCount ()
Mendapatkan jumlah Tensor output.
publik Tensor getOutputTensorFromSignature (String outputName, String signatureKey)
Mendapatkan Tensor yang terkait dengan nama output yang diberikan dalam metode tanda tangan tertentu.
Catatan: Detail tensor output (misalnya, bentuk) mungkin tidak terisi sepenuhnya hingga setelah inferensi
 dieksekusi. Jika Anda memerlukan detail yang diperbarui *sebelum* menjalankan inferensi (mis., setelah mengubah ukuran
 tensor input, yang dapat membatalkan bentuk tensor output), gunakan allocateTensors() untuk
 secara eksplisit memicu alokasi 
dan propagasi bentuk. Perhatikan bahwa, untuk grafik dengan bentuk output
 bergantung pada *nilai* input, bentuk output mungkin tidak ditentukan sepenuhnya sampai
 menjalankan inferensi.
 
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
Parameter
| outputName | Nama output dalam tanda tangan. | 
|---|---|
| signatureKey | Kunci tanda tangan yang mengidentifikasi SignatureDef, bisa bernilai null jika model memiliki satu tanda tangan. | 
Menampilkan
| IllegalArgumentException | jika outputNameatausignatureKeyadalah null atau
     nama yang diberikan kosong, atau tidak valid. | 
|---|
publik String[] getSignatureInputs (String signatureKey)
Mendapatkan daftar input SignatureDef untuk metode signatureKey.
 
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
Parameter
| signatureKey | 
|---|
publik String[] getSignatureKeys ()
Mendapatkan daftar nama metode yang diekspor SignatureDef yang tersedia di model.
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
publik String[] getSignatureOutputs (String signatureKey)
Mendapatkan daftar output SignatureDef untuk metode signatureKey.
 
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
Parameter
| signatureKey | 
|---|
publik kosong resetVariableTensors ()
Lanjutan: Mereset semua tensor variabel ke nilai default.
Jika tensor variabel tidak memiliki buffer terkait, tensor akan direset ke nol.
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
publik kosong resizeInput (int idx, int[] dims, boolean ketat)
Mengubah ukuran input idx-th model native ke redup yang diberikan.
Jika `strict` bernilai Benar, hanya dimensi yang tidak diketahui yang dapat diubah ukurannya. Dimensi yang tidak diketahui adalah ditunjukkan sebagai `-1` dalam array yang ditampilkan oleh `Tensor.shapeSignature()`.
Parameter
| IDX | |
|---|---|
| redupkan | |
| ketat | 
publik kosong resizeInput (int idx, int[] dims)
Mengubah ukuran input idx-th model native ke redup yang diberikan.
Parameter
| IDX | |
|---|---|
| redupkan | 
publik kosong jalankan (Input Objek, output Objek)
Menjalankan inferensi model jika model hanya mengambil satu input, dan hanya memberikan satu output.
Peringatan: API lebih efisien jika Buffer (sebaiknya langsung, tetapi tidak wajib)
 digunakan sebagai tipe data input/output. Sebaiknya gunakan Buffer untuk melakukan feed dan mengambil
 data primitif untuk kinerja yang lebih baik. Jenis Buffer konkret berikut adalah
 didukung:
 
- ByteBuffer- kompatibel dengan semua jenis Tensor primitif yang mendasarinya.
- FloatBuffer- kompatibel dengan Tensor float.
- IntBuffer- kompatibel dengan Tensor int32.
- LongBuffer- kompatibel dengan Tensor int64.
Buffer, atau sebagai input skalar.Parameter
| input | array atau array multidimensi, atau Bufferjenis primitif
     termasuk int, float, long, dan byte.Bufferadalah cara yang direkomendasikan untuk meneruskan
     untuk jenis primitif, sedangkan jenis string memerlukan penggunaan string
     input array. SaatBufferdigunakan, kontennya tidak boleh berubah sampai
     inferensi model selesai, dan pemanggil harus memastikan bahwaBufferberada di
     posisi baca yang sesuai. Nilainullhanya diizinkan jika pemanggil menggunakanDelegateyang memungkinkan interop penanganan buffer, dan buffer tersebut telah diikat ke
     masukkanTensor. | 
|---|---|
| hasil | array multidimensi dari data output, atau Bufferjenis primitif
     termasuk int, float, long, dan byte. SaatBufferdigunakan, pemanggil harus memastikan
     perintahnya mengatur posisi
tulis yang sesuai. Nilai {i>null <i}diizinkan, dan berguna untuk
     kasus tertentu, misalnya, jika pemanggil menggunakanDelegateyang memungkinkan handle buffer
     interop, dan buffer semacam itu telah terikat ke outputTensor(lihat juga Interpreter.Options#setAllowBufferHandleOutput(boolean)),
     atau jika grafik memiliki output yang berbentuk dinamis dan pemanggil harus membuat kueri bentukTensoroutput setelah inferensi dipanggil, mengambil data langsung dari output
     Tensor (melaluiTensor.asReadOnlyBuffer()). | 
publik kosong runForMultipleInputsOutputs (Input Objek[], Map<Integer, Objek> output)
Menjalankan inferensi model jika model mengambil beberapa input, atau menampilkan beberapa output.
Peringatan: API lebih efisien jika Buffer (sebaiknya langsung, tetapi tidak wajib)
 digunakan sebagai tipe data input/output. Sebaiknya gunakan Buffer untuk melakukan feed dan mengambil
 data primitif untuk kinerja yang lebih baik. Jenis Buffer konkret berikut adalah
 didukung:
 
- ByteBuffer- kompatibel dengan semua jenis Tensor primitif yang mendasarinya.
- FloatBuffer- kompatibel dengan Tensor float.
- IntBuffer- kompatibel dengan Tensor int32.
- LongBuffer- kompatibel dengan Tensor int64.
Buffer, atau sebagai input skalar.
 Catatan: Nilai null untuk elemen individu inputs dan outputs adalah
 hanya diizinkan jika pemanggil menggunakan Delegate yang memungkinkan interop penanganan buffer, dan
 buffer tersebut telah terikat dengan Tensor input atau output yang sesuai.
Parameter
| input | array data input. Input harus dalam urutan yang sama dengan input
     model transformer. Setiap input dapat berupa array atau array multidimensi, atau Bufferdari
     jenis primitif termasuk int, float, long, dan byte.Bufferadalah cara yang direkomendasikan
     untuk meneruskan data input besar, sedangkan jenis string memerlukan penggunaan array (multi-dimensi)
     input teks. SaatBufferdigunakan, kontennya tidak boleh berubah sampai model
     inferensi selesai, dan pemanggil harus memastikan bahwaBufferberada di
     posisi baca. | 
|---|---|
| output | indeks output pemetaan peta ke array multidimensi dari data output atau Bufferjenis primitif termasuk int, float, long, dan byte. Sistem hanya perlu menyimpan
     entri untuk output yang akan digunakan. SaatBufferdigunakan, pemanggil harus memastikan
     perintahnya mengatur posisi
tulis yang sesuai. Peta mungkin kosong untuk kasus di mana
     handle buffer digunakan untuk data tensor output, atau saat output
     dibentuk dan pemanggil harus mengkueri bentukTensoroutput setelah inferensi
     dipanggil, mengambil data langsung dari tensor output (melaluiTensor.asReadOnlyBuffer()). | 
publik kosong runSignature (Map<String, Object> input, Map<String, Objek> output)
Sama seperti runSignature(Map, Map, String) tetapi tidak memerlukan penerusan signatureKey,
 dengan asumsi model memiliki satu SignatureDef. Jika model memiliki lebih dari 
satu SignatureDef, maka
 menampilkan pengecualian.
 
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
Parameter
| input | |
|---|---|
| output | 
publik kosong runSignature (Map<String, Object> input, Map<String, Object> output, String signatureKey)
Menjalankan inferensi model berdasarkan SignatureDef yang disediakan melalui signatureKey.
 
Lihat run(Object, Object) untuk detail selengkapnya tentang input dan output yang diizinkan
 tipe data.
 
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
Parameter
| input | Peta dari nama input di SignatureDef ke objek input. | 
|---|---|
| output | Peta dari nama output di SignatureDef ke data output. Kolom ini mungkin kosong jika
     pemanggil ingin membuat kueri data Tensorlangsung setelah inferensi (mis., jika
     bentuk output bersifat dinamis, atau handle buffer output digunakan). | 
| signatureKey | Kunci tanda tangan yang mengidentifikasi SignatureDef. | 
Menampilkan
| IllegalArgumentException | jika inputsadalah null atau kosong, jikaoutputsatausignatureKeyadalah null, atau jika terjadi error saat menjalankan inferensi. | 
|---|
publik kosong setCancelled (boolean dibatalkan)
Lanjutan: Mengganggu inferensi saat panggilan ke run(Object, Object).
 
Tanda pembatalan akan ditetapkan ke true saat fungsi ini dipanggil. Penerjemah akan
 memeriksa flag di antara pemanggilan Op, dan jika yang ditampilkan adalah true, penafsir akan berhenti
 dalam proses eksekusi. Penerjemah akan tetap berstatus dibatalkan hingga "tidak dibatalkan" secara eksplisit dengan cara
 setCancelled(false).
 
PERINGATAN: Ini adalah API eksperimental dan dapat berubah sewaktu-waktu.
Parameter
| dibatalkan | trueuntuk membatalkan inferensi dengan cara terbaik;falsehingga
     resume. | 
|---|
Menampilkan
| IllegalStateException | jika penafsir tidak diinisialisasi dengan cancellable , yang secara default nonaktif. | 
|---|