perguntas frequentes

Se você não encontrar uma resposta para sua pergunta aqui, consulte nossa documentação detalhada para o tópico ou registre um problema no GitHub .

Conversão de modelo

Quais formatos são compatíveis para conversão de TensorFlow para TensorFlow Lite?

Os formatos suportados estão listados aqui

Por que algumas operações não são implementadas no TensorFlow Lite?

Para manter o TFLite leve, apenas alguns operadores TF (listados na lista de permissões ) são compatíveis com o TFLite.

Por que meu modelo não converte?

Como o número de operações do TensorFlow Lite é menor que o do TensorFlow, alguns modelos podem não ser capazes de converter. Alguns erros comuns estão listados aqui .

Para problemas de conversão não relacionados a operações ausentes ou operações de fluxo de controle, pesquise nossos problemas do GitHub ou registre um novo .

Como faço para testar se um modelo do TensorFlow Lite se comporta da mesma forma que o modelo original do TensorFlow?

A melhor maneira de testar é comparar as saídas dos modelos TensorFlow e TensorFlow Lite para as mesmas entradas (dados de teste ou entradas aleatórias) conforme mostrado aqui .

Como determino as entradas/saídas para o buffer do protocolo GraphDef?

A maneira mais fácil de inspecionar um gráfico de um arquivo .pb é usar o Netron , um visualizador de código aberto para modelos de aprendizado de máquina.

Se o Netron não puder abrir o gráfico, você pode tentar a ferramenta Summary_graph .

Se a ferramenta Summary_graph gerar um erro, você pode visualizar o GraphDef com TensorBoard e procurar as entradas e saídas no gráfico. Para visualizar um arquivo .pb , use o script import_pb_to_tensorboard.py conforme abaixo:

python import_pb_to_tensorboard.py --model_dir <model path> --log_dir <log dir path>

Como inspeciono um arquivo .tflite ?

O Netron é a maneira mais fácil de visualizar um modelo do TensorFlow Lite.

Se o Netron não conseguir abrir seu modelo do TensorFlow Lite, você pode tentar o script visualize.py em nosso repositório.

Se você estiver usando o TF 2.5 ou uma versão posterior

python -m tensorflow.lite.tools.visualize model.tflite visualized_model.html

Caso contrário, você pode executar este script com o Bazel

bazel run //tensorflow/lite/tools:visualize model.tflite visualized_model.html

Otimização

Como faço para reduzir o tamanho do meu modelo convertido do TensorFlow Lite?

A quantização pós-treinamento pode ser usada durante a conversão para o TensorFlow Lite para reduzir o tamanho do modelo. A quantização pós-treinamento quantiza os pesos em 8 bits de precisão a partir do ponto flutuante e os desquantiza durante o tempo de execução para executar cálculos de ponto flutuante. No entanto, observe que isso pode ter algumas implicações de precisão.

Se retreinar o modelo for uma opção, considere o treinamento com reconhecimento de quantização . No entanto, observe que o treinamento com reconhecimento de quantização está disponível apenas para um subconjunto de arquiteturas de rede neural convolucional.

Para uma compreensão mais profunda dos diferentes métodos de otimização, consulte Otimização de modelo .

Como otimizo o desempenho do TensorFlow Lite para minha tarefa de aprendizado de máquina?

O processo de alto nível para otimizar o desempenho do TensorFlow Lite é mais ou menos assim:

  • Certifique-se de ter o modelo certo para a tarefa. Para classificação de imagens, confira o TensorFlow Hub .
  • Ajuste o número de threads. Muitos operadores do TensorFlow Lite oferecem suporte a kernels multiencadeados. Você pode usar SetNumThreads() na API C++ para fazer isso. No entanto, aumentar os encadeamentos resulta em variabilidade de desempenho, dependendo do ambiente.
  • Use Aceleradores de Hardware. O TensorFlow Lite oferece suporte à aceleração de modelo para hardware específico usando delegados. Consulte nosso guia Delegados para obter informações sobre quais aceleradores são compatíveis e como usá-los com seu modelo no dispositivo.
  • (Avançado) Modelo de Perfil. A ferramenta de benchmark Tensorflow Lite possui um criador de perfil integrado que pode mostrar estatísticas por operador. Se você souber como otimizar o desempenho de um operador para sua plataforma específica, poderá implementar um operador personalizado .

Para uma discussão mais aprofundada sobre como otimizar o desempenho, consulte as práticas recomendadas .