TensorLabel es un wrapper de utilidades 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 una forma como {1, 10},
donde 1 es el tamaño del lote y 10 es el número de categorías. De hecho, en el segundo eje, podríamos
etiquetarás 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 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: Actualmente, solo admitimos la conversión de tensor a mapa para la primera etiqueta con un tamaño mayor que 1.
Constructores públicos
|
TensorLabel(Map<Integer, List<String>> axisLabels, TensorBuffer tensorBuffer)
Crea un objeto TensorLabel que puede etiquetar los ejes de 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
| Lista<Categoría> |
getCategoryList()
Obtiene una lista de
Category del objeto TensorLabel. |
| Mapa<String, Flotante> |
getMapWithFloatValue()
Obtiene un mapa que asigna la etiqueta a flotante.
|
| Map<String, TensorBuffer> |
getMapWithTensorBuffer()
Obtiene el mapa con un par de la etiqueta y el TensorBuffer correspondiente.
|
Métodos heredados
Constructores públicos
público TensorLabel (Map<Integer, List<String>> axisLabels, TensorBuffer tensorBuffer)
Crea un objeto TensorLabel que puede etiquetar los ejes de tensores multidimensionales.
Parámetros
| axisLabels | Un mapa cuya clave es el ID del eje (comienza en 0) y su valor es correspondiente con etiquetas de recursos. Nota: El tamaño de las etiquetas debe ser el mismo que el tamaño del tensor en ese eje. |
|---|---|
| tensorBuffer | El TensorBuffer que se etiquetará. |
Arroja
| NullPointerException | si axisLabels o tensorBuffer es nulo, o cualquier
en axisLabels es nulo. |
|---|---|
| IllegalArgumentException. | si alguna clave de axisLabels está fuera del rango (en comparación con
la forma de tensorBuffer, o cualquier valor (etiquetas) tiene un tamaño diferente con el tensorBuffer en la dimensión determinada.
|
público TensorLabel (Lista<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 es mayor que 1. Por ejemplo,
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 igual al tamaño del tensor activado el eje a etiquetar. |
|---|---|
| tensorBuffer | El TensorBuffer que se etiquetará. |
Métodos públicos
público Lista<Categoría> . getCategoryList ()
Obtiene una lista de Category del objeto TensorLabel.
El eje de etiqueta debería ser efectivamente el último eje (lo que significa que cada subtensor
especificadas por este eje debe tener un tamaño plano de 1), de modo que cada subtensor etiquetado pueda
convertido 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 Category.
getMapWithFloatValue() es una alternativa, pero muestra un Map como
el resultado.
Arroja
| IllegalStateException | si el tamaño de un subtensor en cada etiqueta no es 1. |
|---|
público Mapa<Cadena, Número de punto flotante> getMapWithFloatValue ()
Obtiene un mapa que asigna la etiqueta a flotante. Solo permitir la asignación en el primer eje con un tamaño mayor en vez de 1, y el eje debería ser efectivamente el último eje (lo que significa que cada subtensor especificadas 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. |
|---|
público Map<String, TensorBuffer> getMapWithTensorBuffer ()
Obtiene el mapa con un par de la etiqueta y el TensorBuffer correspondiente. Solo permite mapeo en el primer eje con un tamaño mayor que 1 actualmente.