Google I / O revient du 18 au 20 mai! Réservez de l'espace et construisez votre emploi du temps Inscrivez-vous maintenant

Compatibilité des opérateurs TensorFlow Lite et TensorFlow

TensorFlow Lite prend en charge un certain nombre d'opérations TensorFlow utilisées dans les modèles d'inférence courants. Au fur et à mesure qu'elles sont traitées par le convertisseur d'optimisation TensorFlow Lite, ces opérations peuvent être élidées ou fusionnées, avant que les opérations prises en charge ne soient mappées sur leurs homologues TensorFlow Lite.

Étant donné que la bibliothèque d'opérateurs intégrée TensorFlow Lite ne prend en charge qu'un nombre limité d'opérateurs TensorFlow, tous les modèles ne sont pas convertibles. Même pour les opérations prises en charge, des modèles d'utilisation très spécifiques sont parfois attendus, pour des raisons de performances. Nous prévoyons d'étendre l'ensemble des opérations prises en charge dans les futures versions de TensorFlow Lite.

La meilleure façon de comprendre comment créer un modèle TensorFlow pouvant être utilisé avec TensorFlow Lite est d'examiner attentivement la manière dont les opérations sont converties et optimisées, ainsi que les limitations imposées par ce processus.

Types pris en charge

La plupart des opérations TensorFlow Lite ciblent à la fois l'inférence en virgule flottante ( float32 ) et quantifiée ( uint8 , int8 ), mais de nombreuses opérations ne le sont pas encore pour d'autres types comme tf.float16 et les chaînes.

Outre l'utilisation d'une version différente des opérations, l'autre différence entre les modèles à virgule flottante et quantifiés réside dans la façon dont ils sont convertis. La conversion quantifiée nécessite des informations de plage dynamique pour les tenseurs. Cela nécessite une "fausse quantification" pendant l'entraînement du modèle, l'obtention d'informations de portée via un ensemble de données d'étalonnage ou une estimation de portée "à la volée". Voir quantification .

Opérations prises en charge et restrictions

TensorFlow Lite prend en charge un sous-ensemble d'opérations TensorFlow avec certaines limitations. Pour la liste complète des opérations et des limitations, voir la page TF Lite Ops .

Conversions simples, pliage et fusion constants

Un certain nombre d'opérations TensorFlow peuvent être traitées par TensorFlow Lite même si elles n'ont pas d'équivalent direct. C'est le cas des opérations qui peuvent être simplement supprimées du graphe ( tf.identity ), remplacées par des tenseurs ( tf.placeholder ), ou fusionnées en opérations plus complexes ( tf.nn.bias_add ). Même certaines opérations prises en charge peuvent parfois être supprimées via l'un de ces processus.

Voici une liste non exhaustive des opérations TensorFlow qui sont généralement supprimées du graphique:

Opérations expérimentales

Les opérations TensorFlow Lite suivantes sont présentes, mais ne sont pas prêtes pour les modèles personnalisés:

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