TensorLabel è un util wrapper per i TensorBuffers con etichette significative su un asse.
Ad esempio, un modello di classificazione di immagini può avere un tensore di output con forma {1, 10},
dove 1 è la dimensione del batch e 10 è il numero di categorie. Infatti, sul secondo asse, potremmo
etichettare ogni sottotensore con il nome o la descrizione di ciascuna categoria corrispondente. TensorLabel potrebbe aiutare a convertire il semplice Tensor di TensorBuffer in una mappa
le etichette predefinite ai sottotensori. In questo caso, se vengono fornite 10 etichette per il secondo asse, TensorLabel potrebbe convertire il tensore {1, 10} originale in una mappa a 10 elementi, ognuno dei quali
Tensor è nella forma {} (scalabile). Esempio di utilizzo:
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();
Nota: al momento supportiamo solo la conversione da tensore a mappa per la prima etichetta con dimensione maggiore di 1.
Costruttori pubblici
|
TensorLabel(Mappa<Numero intero, Elenco<Stringa>> axisLabel, TensorBuffer tensorBuffer)
Crea un oggetto TensorLabel in grado di etichettare gli assi dei tensori multidimensionali.
|
|
|
TensorLabel(List<String> axisLabel, TensorBuffer tensorBuffer)
Crea un oggetto TensorLabel in grado di etichettare su un asse di tensori multidimensionali.
|
Metodi pubblici
| Elenco<Categoria> |
getCategoryList()
Ottiene un elenco di
Category dall'oggetto TensorLabel. |
| Mappa<String, Float> |
getMapWithFloatValue()
Restituisce una mappa che mappa l'etichetta in modo che mobile.
|
| Mappa<String, TensorBuffer> |
getMapWithTensorBuffer()
Recupera la mappa con una coppia di etichetta e il TensorBuffer corrispondente.
|
Metodi ereditati
Costruttori pubblici
pubblica . TensorLabel (Mappa<Integer, Elenco<Stringa>> axisLabel, TensorBuffer tensorBuffer)
Crea un oggetto TensorLabel in grado di etichettare gli assi dei tensori multidimensionali.
Parametri
| axisLabels | Una mappa la cui chiave è l'ID asse (a partire da 0) e il valore è corrispondente etichette. Nota: la dimensione delle etichette deve corrispondere a quella del tensore su quell'asse. |
|---|---|
| tensorBuffer | il TensorBuffer da etichettare. |
Lanci
| NullPointerException | se axisLabels o tensorBuffer è nullo o qualsiasi
in axisLabels è nullo. |
|---|---|
| IllegalArgumentException | se una qualsiasi chiave in axisLabels è fuori intervallo (rispetto a
la forma di tensorBuffer o qualsiasi valore (etichette) ha dimensioni diverse con il valore tensorBuffer nella dimensione specificata.
|
pubblica . TensorLabel (List<String> axisLabel, TensorBuffer tensorBuffer)
Crea un oggetto TensorLabel in grado di etichettare su un asse di tensori multidimensionali.
Nota: le etichette vengono applicate al primo asse la cui dimensione è maggiore di 1. Ad esempio, se
la forma del tensore è [1, 10, 3], le etichette verranno applicate sull'asse 1 (id a partire da
0) e la dimensione di axisLabels deve essere anch'essa 10.
Parametri
| axisLabels | Un elenco di etichette, la cui dimensione deve corrispondere a quella del tensore presente sull'asse da etichettare. |
|---|---|
| tensorBuffer | il TensorBuffer da etichettare. |
Metodi pubblici
pubblica Elenco<Categoria> getCategoryList ()
Ottiene un elenco di Category dall'oggetto TensorLabel.
L'asse dell'etichetta deve essere effettivamente l'ultimo asse (ovvero ogni tensore secondario
specificati da questo asse deve avere una dimensione piatta pari a 1), in modo che ogni sottotensore etichettato possa essere
convertito in un punteggio con valore in virgola mobile. Esempio: un TensorLabel con forma {2, 5, 3}
e l'asse 2 è valido. Se l'asse è 1 o 0, non può essere convertito in un Category.
getMapWithFloatValue() è un'alternativa, ma restituisce un Map come
per ottenere il risultato.
Lanci
| IllegalStateException | se la dimensione di un sottotensore su ciascuna etichetta non è 1. |
|---|
pubblica Map<String, float> getMapWithFloatValue ()
Restituisce una mappa che mappa l'etichetta in modo che mobile. Consenti la mappatura solo sul primo asse con dimensioni maggiori di 1 e l'asse dovrebbe essere effettivamente l'ultimo asse (ovvero ogni tensore secondario specificate da questo asse deve avere una dimensione piatta pari a 1).
getCategoryList() è un'API alternativa per ottenere il risultato.
Lanci
| IllegalStateException | se la dimensione di un sottotensore su ciascuna etichetta non è 1. |
|---|
pubblica Map<String, TensorBuffer> getMapWithTensorBuffer ()
Recupera la mappa con una coppia di etichetta e il TensorBuffer corrispondente. Consenti solo mappatura sul primo asse con dimensioni attualmente superiori a 1.