TensorLabel

klasa publiczna TensorLabel

TensorLabel to kod typu util dla TensorBuffers ze sensownymi etykietami na osi.

Na przykład model klasyfikacji obrazów może mieć tensor wyjściowy o kształcie w postaci {1, 10}, gdzie 1 oznacza rozmiar wsadu, a 10 to liczbę kategorii. Na drugiej osi moglibyśmy nadać każdemu podcentrowi nazwę lub opis odpowiedniej kategorii. Funkcja TensorLabel może pomóc w przekształceniu zwykłego algorytmu Tensor w TensorBuffer w mapę ze wstępnie zdefiniowanymi etykietami w podrzędne. W tym przypadku, jeśli dla 2 osi podasz 10 etykiet, TensorLabel mógłby przekonwertować oryginalną wersję Tensor {1, 10} na mapę 10 elementów, której każdą wartością jest Tensor w kształcie {} (skalarnym). Przykład użycia:

   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 konwersję tensor-mapą tylko w przypadku pierwszej etykiety o rozmiarze większym niż 1.

Konstruktorzy publiczni

TensorLabel(Map<Liczba całkowitaList<String>> axisLabels, TensorBuffer tensorBuffer)
Tworzy obiekt TensorLabel, który może oznaczać etykietami na osiach tensorów wielowymiarowych.
TensorLabel(List<String> axisLabels, TensorBuffer tensorBuffer)
Tworzy obiekt TensorLabel, który może oznaczać etykietami na jednej osi wielowymiarowych tensorów.

Metody publiczne

List<Category>
getCategoryList()
Pobiera listę Category z obiektu TensorLabel.
Map<StringFloat>
getMapWithFloatValue(),
Pobiera mapę mapującą etykietę na pływanie.
Map<StringTensorBuffer>
getMapWithTensorBuffer(),
Pobiera mapę z parą etykiety i odpowiedniego obiektu TensorBuffer.

Metody dziedziczone

Konstruktorzy publiczni

public TensorLabel (Mapa<Liczba całkowitaLista<String>> axisLabel, TensorBuffer tensorBuffer)

Tworzy obiekt TensorLabel, który może oznaczać etykietami na osiach tensorów wielowymiarowych.

Parametry
axisLabels Mapa, której klucz to identyfikator osi (od 0) i wartość odpowiadają etykietom. Uwaga: rozmiar etykiet powinien być taki sam jak rozmiar tensora na tej osi.
tensorBuffer TensorBuffer do oznaczenia etykietą.
Rzuty
NullPointerException jeśli axisLabels lub tensorBuffer ma wartość null albo jakakolwiek wartość w axisLabels jest równa null.
IllegalArgumentException Jeśli dowolny klucz w funkcji axisLabels jest poza zakresem (w porównaniu z kształtem tensorBuffer lub dowolna wartość (etykiety) ma inny rozmiar z wartością tensorBuffer w danym wymiarze.

public TensorLabel (List<String> axisLabel, TensorBuffer tensorBuffer)

Tworzy obiekt TensorLabel, który może oznaczać etykietami na jednej osi wielowymiarowych tensorów.

Uwaga: etykiety są stosowane na pierwszej osi, której rozmiar jest większy niż 1. Jeśli na przykład kształt tensora to [1, 10, 3], etykiety zostaną zastosowane na osi 1 (identyfikator 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 do oznaczenia etykietą.

Metody publiczne

public Lista<Kategoria> getCategoryList ()

Pobiera listę Category z obiektu TensorLabel.

Oś etykiety powinna być ostatnią osią (co oznacza, że każdy podtensor określony przez tę oś powinien mieć płaski rozmiar 1), aby każdy oznaczony etykietą subtensor mógł zostać przekonwertowany na wynik wartości zmiennoprzecinkowej. Przykład: prawidłowy jest atrybut TensorLabel o kształcie {2, 5, 3} i osi 2. Jeśli oś to 1 lub 0, nie można jej przekonwertować na element Category.

getMapWithFloatValue() jest opcją alternatywną, ale w jej wyniku zwraca Map.

Rzuty
IllegalStateException jeśli rozmiar pod tensora dla każdej etykiety nie wynosi 1.

public Map<StringFloat> getMapWithFloatValue ()

Pobiera mapę mapującą etykietę na pływanie. Zezwalaj na mapowanie tylko na pierwszej osi o rozmiarze większym niż 1 – oś powinna być w praktyce ostatnią osią (co oznacza, że każdy podtensor określony przez tę oś powinien mieć płaski rozmiar 1).

getCategoryList() to alternatywny interfejs API do uzyskania wyniku.

Rzuty
IllegalStateException jeśli rozmiar pod tensora dla każdej etykiety nie wynosi 1.

public Map<StringTensorBuffer> getMapWithTensorBuffer ()

Pobiera mapę z parą etykiety i odpowiedniego obiektu TensorBuffer. Zezwalaj na mapowanie tylko na pierwszej osi o rozmiarze większym niż 1.