TensorLabel adalah pembungkus util untuk TensorBuffers dengan label bermakna pada sumbunya.
Misalnya, model klasifikasi gambar mungkin memiliki tensor keluaran dengan bentuk {1, 10}, dengan 1 adalah ukuran kumpulan dan 10 adalah jumlah kategori. Faktanya, pada sumbu ke-2, kita dapat memberi label pada setiap sub-tensor dengan nama atau deskripsi dari setiap kategori yang sesuai. TensorLabel
dapat membantu mengubah Tensor biasa di TensorBuffer
menjadi peta dari label yang telah ditentukan sebelumnya menjadi sub-tensor. Dalam hal ini, jika diberikan 10 label untuk sumbu ke-2, TensorLabel
dapat mengonversi Tensor {1, 10} asli menjadi peta 10 elemen, yang masing-masing nilainya adalah Tensor dalam bentuk {} (skalar). Contoh penggunaan:
TensorBuffer outputTensor = ...; List<String> labels = FileUtil.loadLabels(context, labelFilePath); // labels the first axis with size greater than one TensorLabel labeled = new TensorLabel(labels, outputTensor); // If each sub-tensor has effectively size 1, we can directly get a float value Map<String, Float> probabilities = labeled.getMapWithFloatValue(); // Or get sub-tensors, when each sub-tensor has elements more than 1 Map<String, TensorBuffer> subTensors = labeled.getMapWithTensorBuffer();
Catatan: saat ini kami hanya mendukung konversi tensor ke peta untuk label pertama dengan ukuran lebih besar dari 1.
Konstruktor Publik
TensorLabel ( Peta < Integer , Daftar < String >> axisLabels, TensorBuffer tensorBuffer) Membuat objek TensorLabel yang mampu memberi label pada sumbu tensor multidimensi. | |
TensorLabel ( Daftar < String > axisLabels, TensorBuffer tensorBuffer) Membuat objek TensorLabel yang mampu memberi label pada satu sumbu tensor multidimensi. |
Metode Publik
Daftar < Kategori > | dapatkan Daftar Kategori () Mendapatkan daftar Category dari objek TensorLabel . |
Peta < String , Float > | dapatkanMapWithFloatValue () Mendapatkan peta yang memetakan label menjadi mengambang. |
Peta < String , TensorBuffer > | dapatkanMapWithTensorBuffer () Mendapatkan peta dengan sepasang label dan TensorBuffer yang sesuai. |
Metode Warisan
Konstruktor Publik
TensorLabel publik ( Peta < Integer , Daftar < String >> axisLabels, TensorBuffer tensorBuffer)
Membuat objek TensorLabel yang mampu memberi label pada sumbu tensor multidimensi.
Parameter
sumbuLabel | Peta, yang kuncinya adalah id sumbu (mulai dari 0) dan nilainya adalah label yang sesuai. Catatan: Ukuran label harus sama dengan ukuran tensor pada sumbu tersebut. |
---|---|
tensorBuffer | TensorBuffer yang akan diberi label. |
Melempar
NullPointerException | jika axisLabels atau tensorBuffer adalah null, atau nilai apa pun di axisLabels adalah null. |
---|---|
Pengecualian Argumen Ilegal | jika ada kunci di axisLabels yang berada di luar jangkauan (dibandingkan dengan bentuk tensorBuffer , atau nilai apa pun (label) memiliki ukuran berbeda dengan tensorBuffer pada dimensi tertentu. |
TensorLabel publik ( Daftar < String > axisLabels, TensorBuffer tensorBuffer)
Membuat objek TensorLabel yang mampu memberi label pada satu sumbu tensor multidimensi.
Catatan: Label diterapkan pada sumbu pertama yang ukurannya lebih besar dari 1. Misalnya, jika bentuk tensornya [1, 10, 3], label akan diterapkan pada sumbu 1 (id mulai dari 0), dan ukuran axisLabels
juga harus 10.
Parameter
sumbuLabel | Daftar label yang ukurannya harus sama dengan ukuran tensor pada sumbu yang akan diberi label. |
---|---|
tensorBuffer | TensorBuffer yang akan diberi label. |
Metode Publik
Daftar publik < Kategori > getCategoryList ()
Mendapatkan daftar Category
dari objek TensorLabel
.
Sumbu label harus secara efektif menjadi sumbu terakhir (yang berarti setiap sub tensor yang ditentukan oleh sumbu ini harus memiliki ukuran datar 1), sehingga setiap sub tensor berlabel dapat diubah menjadi skor nilai float. Contoh: TensorLabel
dengan bentuk {2, 5, 3}
dan sumbu 2 valid. Jika sumbunya 1 atau 0, sumbu tersebut tidak dapat diubah menjadi Category
.
getMapWithFloatValue()
adalah alternatif tetapi mengembalikan Map
sebagai hasilnya.
Melempar
IlegalStateException | jika ukuran sub tensor pada setiap label bukan 1. |
---|
Peta publik < String , Float > getMapWithFloatValue ()
Mendapatkan peta yang memetakan label menjadi mengambang. Hanya izinkan pemetaan pada sumbu pertama dengan ukuran lebih besar dari 1, dan sumbu tersebut harus secara efektif menjadi sumbu terakhir (yang berarti setiap sub tensor yang ditentukan oleh sumbu ini harus memiliki ukuran datar 1).
getCategoryList()
adalah API alternatif untuk mendapatkan hasilnya.
Melempar
IlegalStateException | jika ukuran sub tensor pada setiap label bukan 1. |
---|
Peta publik < String , TensorBuffer > getMapWithTensorBuffer ()
Mendapatkan peta dengan sepasang label dan TensorBuffer yang sesuai. Saat ini hanya izinkan pemetaan pada sumbu pertama dengan ukuran lebih besar dari 1.