Aide à protéger la Grande barrière de corail avec tensorflow sur Kaggle Rejoignez Défi

Opérateurs TensorFlow sélectionnés pris en charge

Opérateurs principaux TensorFlow

Voici une liste exhaustive des opérations principales de TensorFlow prises en charge par l'environnement d'exécution TensorFlow Lite avec la fonctionnalité Select TensorFlow Ops.

Opérateurs TensorFlow Text et SentencePiece

Les suivants tensorflow texte et SentencePiece opérateurs sont pris en charge si vous utilisez l'API Python pour la conversion et d' importer ces bibliothèques.

Opérateurs TF.Text :

  • CaseFoldUTF8
  • ConstrainedSequence
  • MaxSpanningTree
  • NormalizeUTF8
  • NormalizeUTF8WithOffsetsMap
  • RegexSplitWithOffsets
  • RougeL
  • SentenceFragments
  • SentencepieceOp
  • SentencepieceTokenizeOp
  • SentencepieceTokenizeWithOffsetsOp
  • SentencepieceDetokenizeOp
  • SentencepieceVocabSizeOp
  • SplitMergeTokenizeWithOffsets
  • UnicodeScriptTokenizeWithOffsets
  • WhitespaceTokenizeWithOffsets
  • WordpieceTokenizeWithOffsets

Opérateurs SentencePiece :

  • SentencepieceGetPieceSize
  • SentencepiecePieceToId
  • SentencepieceIdToPiece
  • SentencepieceEncodeDense
  • SentencepieceEncodeSparse
  • SentencepieceDecode

L'extrait suivant montre comment convertir des modèles avec les opérateurs ci-dessus :

import tensorflow as tf
# These imports are required to load operators' definition.
import tensorflow_text as tf_text
import sentencepiece as spm

converter = tf.lite.TFLiteConverter.from_keras_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
model_data = converter.convert()

Du côté de l'exécution, il est également nécessaire de lier la bibliothèque TensorFlow Text ou SentencePiece à l'application ou au binaire final.

Opérateurs définis par l'utilisateur

Si vous créé vos propres opérateurs de tensorflow , vous pouvez également convertir les modèles qui les contiennent à tensorflow Lite par la liste des opérateurs requis dans les experimental_select_user_tf_ops comme suit:

import tensorflow as tf

ops_module = tf.load_op_library('./your_ops_library.so')

converter = tf.lite.TFLiteConverter.from_saved_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
converter.target_spec.experimental_select_user_tf_ops = [
    'your_op_name1',
    'your_op_name2'
]
model_data = converter.convert()

Du côté de l'exécution, il est également nécessaire de lier votre bibliothèque d'opérateurs à l'application ou au binaire final.

Ajoutez les opérateurs principaux TensorFlow à la liste autorisée.

Si vous frappez le cas où les opérateurs de base de tensorflow ne sont pas dans le permis ci - dessus la liste , vous pouvez signaler la demande de fonctionnalité à ici avec les noms des opérateurs de base de tensorflow, ne figure pas dans la liste autorisée.

Vous pouvez également créer votre propre pull request à partir du code source. Par exemple, si vous voulez ajouter le raw_ops.StringToNumber op dans la liste autorisée, il y a trois endroits à jour comme celui - ci engage .

(1) Ajouter le noyau de l' opérateur code source à la portable_extended_ops_group2 règle de BUILD.

filegroup(
    name = "portable_extended_ops_group2",
    srcs = [
        ...
+       "string_to_number_op.cc",

        ...
    ],
)

Afin de trouver le fichier source du noyau de l' opérateur relvant sous le tensorflow/core/kernels répertoire, vous pouvez rechercher l'emplacement du code source, qui contient la déclaration du noyau qui suit le nom de l' opérateur:

REGISTER_KERNEL_BUILDER(Name("StringToNumber")                 \
                            .Device(DEVICE_CPU)                \
                            .TypeConstraint<type>("out_type"), \
                        StringToNumberOp<type>)

S'il y a des fichiers d' en- tête sous la tensorflow/core/kernels répertoire, nécessaire dans le code source du noyau opérateur, vous devez ajouter le fichier d' en- tête dans la portable_extended_ops_headers règle de BUILD comme suit:

filegroup(
    name = "portable_extended_ops_headers",
    srcs = [
        ...
+       "string_util.h",

        ...
    ],
)

(2) Ajoutez le nom de l'opérateur à la liste autorisée.

La liste autorisée est définie dans le tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Le nom de l'opérateur principal TensorFlow doit être répertorié pour être autorisé via l'option Sélectionner TF.

static const std::set<std::string>* allowlisted_flex_ops =
    new std::set<std::string>({
        ...
+       "StringToNumber",

        ...
    });

Étant donné que la liste ci-dessus est triée par ordre alphabétique, elle veille à placer le nom au bon endroit.

(3) Ajoutez le nom de l'opérateur à cette page de guide.

Pour montrer l'inclusion de l'opérateur aux autres développeurs, cette page de guide doit également être mise à jour. Cette page se trouve à l' tensorflow/lite/g3doc/guide/op_select_allowlist.md .

## TensorFlow core operators

The following is an exhaustive list of TensorFlow core operations that are
supported by TensorFlow Lite runtime with the Select TensorFlow Ops feature.

...
+*   `raw_ops.StringToNumber`
...

Étant donné que la liste ci-dessus est triée par ordre alphabétique, elle veille à placer le nom au bon endroit.