perguntas frequentes

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

Conversão de modelo

Quais formatos são compatíveis com a conversão do TensorFlow para o 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 suportados no 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 no GitHub ou registre um novo .

Como posso 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 do 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 conseguir abrir o gráfico, você pode tentar a ferramenta summary_graph .

Se a ferramenta summary_graph gerar um erro, você poderá 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 como abaixo:

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

Como inspeciono um arquivo .tflite ?

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 reduzo o tamanho do meu modelo convertido do TensorFlow Lite?

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

Se o retreinamento do 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 redes neurais convolucionais.

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

Como otimizar 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 multithread. Você pode usar SetNumThreads() na API C++ para fazer isso. No entanto, o aumento de threads 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 para delegados para obter informações sobre quais aceleradores são compatíveis e como usá-los com seu modelo no dispositivo.
  • Modelo de perfil (avançado). A ferramenta de benchmarking 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, dê uma olhada em Melhores Práticas .