TensorLabel to kod narzędziowy TensorBuffers z przydatnymi etykietami na osi.
Na przykład model klasyfikacji obrazów może mieć tensor wyjściowy o kształcie równym {1, 10},
gdzie 1 to rozmiar wsadu, a 10 to liczba kategorii. Na drugiej osi mogliśmy
oznacz poszczególne składniki podrzędne nazwami lub opisami odpowiednich kategorii. TensorLabel może pomóc w przekształceniu zwykłego procesora Tensor w TensorBuffer na mapę z
wstępnie zdefiniowanych etykiet do podrzędników. W tym przypadku, jeśli podano 10 etykiet dla 2 osi, funkcja TensorLabel może przekonwertować oryginalny Tensor {1, 10} na mapę z 10 elementami, której wartości
to Tensor w kształcie {} (skalarny). Przykład zastosowania:
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();
Uwaga: obecnie obsługujemy tylko konwersje z tensora na mapowanie w przypadku pierwszej etykiety o rozmiarze większym niż 1.
Konstruktorki publiczne
|
TensorLabel(Map <Liczba całkowita, Lista<Ciąg>> axisAttributes, TensorBuffer tensorBuffer)
Tworzy obiekt TensorLabel, który można oznaczać etykietami na osiach tensorów wielowymiarowych.
|
|
|
TensorLabel(List<String> axis labels, TensorBuffer tensorBuffer)
Tworzy obiekt TensorLabel, który można oznaczać etykietami na jednej osi tensorów wielowymiarowych.
|
Metody publiczne
| List<Kategoria> |
getCategoryList()
Pobiera listę wartości
Category z obiektu TensorLabel. |
| Map<String, Float> (Mapa) |
getMapWithFloatValue()
Pobiera mapę, która mapuje etykietę na pływającą.
|
| Map<String, TensorBuffer> (Mapa) |
getMapWithTensorBuffer()
Pobiera mapę z parą etykiety i odpowiednim TensorBuffer.
|
Metody dziedziczone
Konstruktorki publiczne
publiczne . TensorLabel (Mapa <liczba całkowita, lista<Ciąg>> axislines, TensorBuffer tensorBuffer)
Tworzy obiekt TensorLabel, który można oznaczać etykietami na osiach tensorów wielowymiarowych.
Parametry
| axisLabels | Mapa, której klucz to identyfikator osi (zaczynający się od 0) i odpowiadającą mu wartość etykiety. Uwaga: rozmiar etykiet powinien być taki sam jak rozmiar tensora na tej osi. |
|---|---|
| tensorBuffer | TensorBuffer, który ma zostać oznaczony etykietą. |
Rzuty
| NullPointerException | jeśli axisLabels lub tensorBuffer ma wartość null lub dowolną
wartość w funkcji axisLabels jest pusta. |
|---|---|
| IllegalArgumentException | jeśli dowolny klucz w funkcji axisLabels jest poza zakresem (w porównaniu z
kształt elementu tensorBuffer lub dowolna wartość (etykiety) ma inny rozmiar z tensorBuffer w danym wymiarze.
|
publiczne . TensorLabel (List<String> axis labels, TensorBuffer tensorBuffer)
Tworzy obiekt TensorLabel, który można oznaczać etykietami na jednej osi tensorów wielowymiarowych.
Uwaga: etykiety są stosowane na pierwszej osi, której rozmiar jest większy niż 1. Na przykład, jeśli
kształt tensora to [1, 10, 3], etykiety zostaną zastosowane na osi 1 (identyfikator zaczynający się od
0), a rozmiar axisLabels również powinien wynosić 10.
Parametry
| axisLabels | Lista etykiet, których rozmiar powinien być taki sam jak rozmiar tensora na osi oznaczonej etykietą. |
|---|---|
| tensorBuffer | TensorBuffer, który ma zostać oznaczony etykietą. |
Metody publiczne
publiczne List<Kategoria> . getCategoryList ()
Pobiera listę wartości Category z obiektu TensorLabel.
Oś etykiety powinna być ostatnią osią (co oznacza, że każdy tensor podrzędny
określony przez tę oś powinien mieć płaski rozmiar 1), tak aby każdy oznaczony tensor podrzędny mógł zostać
na wartość zmiennoprzecinkową. Przykład: TensorLabel o kształcie {2, 5, 3}
a oś 2 jest prawidłowa. Jeśli oś ma wartość 1 lub 0, nie można jej przekształcić w Category.
getMapWithFloatValue() jest alternatywą, ale zwraca Map jako
w konsekwencji wyniku.
Rzuty
| IllegalStateException | jeśli rozmiar tensora podrzędnego na każdej etykiecie nie wynosi 1. |
|---|
publiczne Map<String, Float> getMapWithFloatValue ()
Pobiera mapę, która mapuje etykietę na pływającą. Zezwalaj na mapowanie tylko na pierwszej osi o większym rozmiarze niż 1, przy czym oś powinna być ostatnią osią (co oznacza, że każdy tensor podrzędny określony przez tę oś powinien mieć płaski rozmiar 1).
getCategoryList() to alternatywny interfejs API pozwalający uzyskać wynik.
Rzuty
| IllegalStateException | jeśli rozmiar tensora podrzędnego na każdej etykiecie nie wynosi 1. |
|---|
publiczne Map<String, TensorBuffer> getMapWithTensorBuffer ()
Pobiera mapę z parą etykiety i odpowiednim TensorBuffer. Zezwalaj tylko na na pierwszej osi o rozmiarze większym niż 1.