TensorLabel

classe pública TensorLabel

TensorLabel é um wrapper util para TensorBuffers com rótulos significativos em um eixo.

Por exemplo, um modelo de classificação de imagem pode ter um tensor de saída com forma como {1, 10}, em que 1 é o tamanho do lote e 10 é o número de categorias. Na verdade, no segundo eixo, podemos rotular cada subtensor com o nome ou a descrição de cada categoria correspondente. TensorLabel pode ajudar a converter o Tensor simples em TensorBuffer em um mapa de rótulos predefinidos para subtensores. Nesse caso, se forem fornecidos 10 rótulos para o segundo eixo, TensorLabel poderá converter o Tensor original {1, 10} em um mapa de 10 elementos. Cada valor é Tensor em forma {} (escalar). Exemplo 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();
 

Observação: no momento, só oferecemos suporte à conversão de tensor para mapa para o primeiro rótulo com tamanho maior que 1.

Construtores públicos

TensorLabel(Map<IntegerList<String>> axisLabels, TensorBuffer tensorBuffer)
Cria um objeto TensorLabel que é capaz de rotular os eixos de tensores multidimensionais.
TensorLabel(List<String> axisLabels, TensorBuffer tensorBuffer)
Cria um objeto TensorLabel que é capaz de rotular em um eixo de tensores multidimensionais.

Métodos públicos

List<Category>
Função getCategoryList()
Recebe uma lista de Category do objeto TensorLabel.
Map<StringFloat>
getMapWithFloatValue()
Recebe um mapa que mapeia o rótulo para o ponto flutuante.
Map<StringTensorBuffer>
getMapWithTensorBuffer()
Recebe o mapa com um par do rótulo e o TensorBuffer correspondente.

Métodos herdados

Construtores públicos

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

Cria um objeto TensorLabel que é capaz de rotular os eixos de tensores multidimensionais.

Parâmetros
axisLabels Um mapa cuja chave é o ID do eixo (a partir de 0) e o valor são os rótulos correspondentes. Observação: o tamanho dos rótulos precisa ser o mesmo do tensor desse eixo.
tensorBuffer O TensorBuffer a ser rotulado.
Gera
NullPointerException se axisLabels ou tensorBuffer for nulo, ou qualquer valor em axisLabels for nulo.
IllegalArgumentException se alguma chave em axisLabels estiver fora do intervalo (em comparação com a forma de tensorBuffer, ou qualquer valor (rótulo) tiver um tamanho diferente com o tensorBuffer na dimensão determinada.

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

Cria um objeto TensorLabel que é capaz de rotular em um eixo de tensores multidimensionais.

Observação: os rótulos são aplicados ao primeiro eixo, cujo tamanho é maior que 1. Por exemplo, se a forma do tensor for [1, 10, 3], os rótulos serão aplicados ao eixo 1 (ID a partir de 0) e o tamanho de axisLabels também deverá ser 10.

Parâmetros
axisLabels Uma lista de rótulos com o tamanho igual ao do tensor no eixo a ser rotulado.
tensorBuffer O TensorBuffer a ser rotulado.

Métodos públicos

public List<Category> getCategoryList ()

Recebe uma lista de Category do objeto TensorLabel.

O eixo do rótulo precisa ser o último eixo, o que significa que cada subtensor especificado por esse eixo precisa ter um tamanho simples de 1, para que cada subtensor rotulado possa ser convertido em uma pontuação de valor flutuante. Exemplo: um TensorLabel com a forma {2, 5, 3} e o eixo 2 é válido. Se o eixo for 1 ou 0, ele não poderá ser convertido em um Category.

getMapWithFloatValue() é uma alternativa, mas retorna uma Map como resultado.

Gera
IllegalStateException se o tamanho de um subtensor em cada rótulo não for 1.

public Map<StringFloat> getMapWithFloatValue ()

Recebe um mapa que mapeia o rótulo para o ponto flutuante. Permita o mapeamento apenas no primeiro eixo com tamanho maior que 1. O eixo precisa ser efetivamente o último eixo. Ou seja, cada subtensor especificado por esse eixo precisa ter um tamanho simples de 1.

getCategoryList() é uma API alternativa para receber o resultado.

Gera
IllegalStateException se o tamanho de um subtensor em cada rótulo não for 1.

public Map<StringTensorBuffer> getMapWithTensorBuffer ()

Recebe o mapa com um par do rótulo e o TensorBuffer correspondente. Permitir o mapeamento apenas do primeiro eixo com tamanho maior que 1 no momento.