Compatibilità con gli operatori TensorFlow Lite e TensorFlow

TensorFlow Lite supporta una serie di operazioni TensorFlow utilizzate nei modelli di inferenza comuni. Man mano che vengono elaborate dal convertitore di ottimizzazione TensorFlow Lite, tali operazioni possono essere elise o fuse prima che le operazioni supportate vengano mappate alle controparti TensorFlow Lite.

Poiché la libreria di operatori incorporata di TensorFlow Lite supporta solo un numero limitato di operatori TensorFlow, non tutti i modelli sono convertibili. Anche per le operazioni supportate, a volte sono previsti modelli di utilizzo molto specifici, per motivi di prestazioni. Prevediamo di espandere il set di operazioni supportate nelle future versioni di TensorFlow Lite.

Il modo migliore per capire come costruire un modello TensorFlow che può essere utilizzato con TensorFlow Lite è considerare attentamente come le operazioni vengono convertite e ottimizzate, insieme alle limitazioni imposte da questo processo.

Tipi supportati

La maggior parte delle operazioni di TensorFlow Lite hanno come obiettivo l'inferenza sia in virgola mobile ( float32 ) che quantizzata ( uint8 , int8 ), ma molte operazioni non lo fanno ancora per altri tipi come tf.float16 e stringhe.

Oltre a utilizzare versioni diverse delle operazioni, l'altra differenza tra i modelli a virgola mobile e quantizzati è il modo in cui vengono convertiti. La conversione quantizzata richiede informazioni sulla gamma dinamica per i tensori. Ciò richiede una "falsa quantizzazione" durante l'addestramento del modello, l'acquisizione di informazioni sulla portata tramite un set di dati di calibrazione o l'esecuzione di una stima della portata "al volo". Vedi quantizzazione .

Operazioni e limitazioni supportate

TensorFlow Lite supporta un sottoinsieme di operazioni TensorFlow con alcune limitazioni. Per l'elenco completo delle operazioni e delle limitazioni, vedere la pagina TF Lite Ops .

Conversioni dirette, piegatura e fusione costanti

Un certo numero di operazioni TensorFlow possono essere elaborate da TensorFlow Lite anche se non hanno un equivalente diretto. Questo è il caso delle operazioni che possono essere semplicemente rimosse dal grafo ( tf.identity ), sostituite da tensori ( tf.placeholder ) o fuse in operazioni più complesse ( tf.nn.bias_add ). Anche alcune operazioni supportate possono talvolta essere rimosse tramite uno di questi processi.

Di seguito è riportato un elenco non esaustivo di operazioni TensorFlow che di solito vengono rimosse dal grafico:

Operazioni sperimentali

Sono presenti le seguenti operazioni di TensorFlow Lite, ma non pronte per i modelli personalizzati:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF