TensorLabel

clase pública TensorLabel

TensorLabel es un wrapper de utilidad para TensorBuffers con etiquetas significativas en un eje.

Por ejemplo, un modelo de clasificación de imágenes puede tener un tensor de salida con la forma {1, 10}, en la que 1 es el tamaño del lote y 10 es la cantidad de categorías. De hecho, en el segundo eje, podríamos etiquetar cada subtensor con el nombre o la descripción de cada categoría correspondiente. TensorLabel podría ayudar a convertir el tensor simple de TensorBuffer en un mapa de etiquetas predefinidas a subtensores. En este caso, si se proporcionan 10 etiquetas para el segundo eje, TensorLabel podría convertir el tensor {1, 10} original en un mapa de 10 elementos, cada uno de los cuales es un tensor en forma {} (escalar). Ejemplo de uso:

   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: Por el momento, solo admitimos la conversión de tensor a mapa para la primera etiqueta con un tamaño superior a 1.

Constructores públicos

TensorLabel(Map<IntegerList<String>> axisLabels, TensorBuffer tensorBuffer)
Crea un objeto TensorLabel que puede etiquetar los ejes de los tensores multidimensionales.
TensorLabel(List<String> axisLabels, TensorBuffer tensorBuffer)
Crea un objeto TensorLabel que puede etiquetar en un eje de tensores multidimensionales.

Métodos públicos

List<Category>
getCategoryList()
Obtiene una lista de Category del objeto TensorLabel.
Map<StringFloat>
getMapWithFloatValue()
Obtiene un mapa que asigna etiquetas a números de punto flotante.
Map<StringTensorBuffer>
getMapWithTensorBuffer()
Obtiene el mapa con un par de la etiqueta y el TensorBuffer correspondiente.

Métodos heredados

Constructores públicos

public TensorLabel (Map<IntegerList<String>> axisLabels, TensorBuffer tensorBuffer)

Crea un objeto TensorLabel que puede etiquetar los ejes de los tensores multidimensionales.

Parámetros
axisLabels Un mapa cuya clave es el ID del eje (empieza en 0) y el valor es las etiquetas correspondientes. Nota: El tamaño de las etiquetas debe ser el mismo que el del tensor en ese eje.
tensorBuffer El TensorBuffer que se etiquetará.
Arroja
NullPointerException si axisLabels o tensorBuffer es nulo, o cualquier valor en axisLabels es nulo.
IllegalArgumentException si alguna clave de axisLabels está fuera del rango (en comparación con la forma de tensorBuffer, o bien si cualquier valor (etiquetas) tiene un tamaño diferente con el tensorBuffer en la dimensión dada.

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

Crea un objeto TensorLabel que puede etiquetar en un eje de tensores multidimensionales.

Nota: Las etiquetas se aplican en el primer eje cuyo tamaño sea superior a 1. Por ejemplo, si la forma del tensor es [1, 10, 3], las etiquetas se aplicarán en el eje 1 (ID a partir de 0) y el tamaño de axisLabels también debe ser 10.

Parámetros
axisLabels Una lista de etiquetas, cuyo tamaño debe ser el mismo que el del tensor en el eje que se etiquetará.
tensorBuffer El TensorBuffer que se etiquetará.

Métodos públicos

public List<Category> getCategoryList ()

Obtiene una lista de Category del objeto TensorLabel.

El eje de etiqueta debe ser efectivamente el último eje (lo que significa que cada subtensor especificado por este eje debe tener un tamaño plano de 1), de modo que cada subtensor etiquetado pueda convertirse en una puntuación de valor flotante. Ejemplo: Un TensorLabel con la forma {2, 5, 3} y el eje 2 es válido. Si el eje es 1 o 0, no se puede convertir en un Category.

getMapWithFloatValue() es una alternativa, pero muestra un Map como resultado.

Arroja
IllegalStateException si el tamaño de un subtensor en cada etiqueta no es 1.

public Map<StringFloat> getMapWithFloatValue ()

Obtiene un mapa que asigna etiquetas a números de punto flotante. Solo permite la asignación en el primer eje con un tamaño mayor que 1, y el eje debe ser efectivamente el último eje (lo que significa que cada subtensor especificado por este eje debe tener un tamaño plano de 1).

getCategoryList() es una API alternativa para obtener el resultado.

Arroja
IllegalStateException si el tamaño de un subtensor en cada etiqueta no es 1.

public Map<StringTensorBuffer> getMapWithTensorBuffer ()

Obtiene el mapa con un par de la etiqueta y el TensorBuffer correspondiente. Solo permite la asignación en el primer eje con un tamaño mayor que 1 actualmente.