Partecipa al simposio Women in ML il 7 dicembre Registrati ora

Operatori selezionati di TensorFlow supportati

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Operatori principali di TensorFlow

Di seguito è riportato un elenco completo delle operazioni principali di TensorFlow supportate dal runtime di TensorFlow Lite con la funzione Seleziona TensorFlow Ops.

Operatori TensorFlow Text e SentencePiece

I seguenti operatori TensorFlow Text e SentencePiece sono supportati se utilizzi l'API Python per la conversione e importi tali librerie.

Operatori TF.Text:

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

Operatori FrasePiece:

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

Il frammento di codice seguente mostra come convertire i modelli con gli operatori sopra indicati:

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()

Sul lato runtime, è anche necessario collegare la libreria TensorFlow Text o SentencePiece all'app o al file binario finale.

Operatori definiti dall'utente

Se hai creato i tuoi operatori TensorFlow , puoi anche convertire i modelli che li contengono in TensorFlow Lite elencando gli operatori richiesti in experimental_select_user_tf_ops come segue:

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()

Sul lato runtime, è anche necessario collegare la libreria degli operatori all'app o al file binario finale.

Aggiungi gli operatori principali di TensorFlow all'elenco consentito.

Se si verifica il caso in cui gli operatori principali TensorFlow non sono nell'elenco consentito sopra, è possibile segnalare la richiesta di funzionalità qui con i nomi degli operatori principali TensorFlow, non elencati nell'elenco consentito.

Puoi anche creare la tua richiesta pull dal codice sorgente. Ad esempio, se vuoi aggiungere l' raw_ops.StringToNumber nell'elenco consentito, ci sono tre posti per aggiornare come questo commit .

(1) Aggiungere il codice sorgente del kernel dell'operatore alla regola BUILD portable_extended_ops_group2 .

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

        ...
    ],
)

Per trovare il file sorgente del kernel dell'operatore rilevante nella directory tensorflow/core/kernels , puoi cercare la posizione del codice sorgente, che contiene la seguente dichiarazione del kernel con il nome dell'operatore:

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

Se sono presenti file di intestazione nella directory tensorflow/core/kernels , richiesta nel codice sorgente del kernel dell'operatore, è necessario aggiungere il file di intestazione nella regola BUILD portable_extended_ops_headers come segue:

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

        ...
    ],
)

(2) Aggiungere il nome dell'operatore all'elenco dei permessi.

L'elenco consentito è definito in tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Il nome dell'operatore principale TensorFlow deve essere elencato per poter essere consentito tramite l'opzione Seleziona TF.

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

        ...
    });

Poiché l'elenco sopra è ordinato in ordine alfabetico, assicura di posizionare il nome nel posto giusto.

(3) Aggiungere il nome dell'operatore a questa pagina di guida.

Per mostrare l'inclusione dell'operatore agli altri sviluppatori, anche questa pagina della guida dovrebbe essere aggiornata. Questa pagina si trova in 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`
...

Poiché l'elenco sopra è ordinato in ordine alfabetico, assicura di posizionare il nome nel posto giusto.