Unterstützte Select TensorFlow-Operatoren

TensorFlow-Kernoperatoren

Im Folgenden finden Sie eine vollständige Liste der TensorFlow-Kernoperationen, die von der TensorFlow Lite-Laufzeit mit der Funktion TensorFlow Ops auswählen unterstützt werden.

TensorFlow Text- und SentencePiece-Operatoren

Die folgenden TensorFlow Text und SentencePiece Betreiber unterstützt werden , wenn Sie den Python - API für die Konvertierung verwenden und diese Bibliotheken importieren.

TF.Textoperatoren:

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

Satzstückoperatoren:

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

Das folgende Snippet zeigt, wie Modelle mit den obigen Operatoren konvertiert werden:

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

Auf der Laufzeitseite ist es auch erforderlich, die TensorFlow Text- oder SentencePiece-Bibliothek in die endgültige App oder Binärdatei einzubinden.

Benutzerdefinierte Operatoren

Wenn Sie Ihre eigenen TensorFlow Betreiber erstellt , können Sie auch Modelle wandeln sie in TensorFlow Lite durch die Auflistung erforderlich Betreiber in dem enthaltenden experimental_select_user_tf_ops , wie folgend:

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

Auf der Laufzeitseite ist es auch erforderlich, Ihre Operatorbibliothek mit der endgültigen App oder Binärdatei zu verknüpfen.

Fügen Sie TensorFlow-Kernoperatoren zur zulässigen Liste hinzu.

Wenn Sie den Fall treffen , wo die TensorFlow Kernbetreiber nicht in der oben erlaubt Liste , können Sie den Feature - Request an berichten können hier mit den Namen der TensorFlow Kernbetreiber nicht in der erlaubten Liste aufgeführt.

Sie können auch Ihren eigenen Pull-Request aus dem Quellcode erstellen. Zum Beispiel, wenn Sie hinzufügen möchten raw_ops.StringToNumber op in der erlaubten Liste gibt es drei Plätze Update wie diese begehen .

(1) Fügen Sie den Operator Kernel - Quellcode in die portable_extended_ops_group2 BUILD - Regel.

filegroup(
    name = "portable_extended_ops_group2",
    srcs = [
        ...

+       "string_to_number_op.cc",

        ...
    ],
)

Um die relvant Operator - Kernel - Quelldatei unter dem finden tensorflow/core/kernels Verzeichnis, können Sie den Quellcode Standort suchen, die die folgenden Kernel - Deklaration mit dem Name des Bedieners enthält:

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

Wenn es irgendwelche Header - Dateien unter denen sind tensorflow/core/kernels Verzeichnis, benötigte in dem Operator Kernel - Quellcode, müssen Sie die Header - Datei in die hinzufügen portable_extended_ops_headers BUILD Regel wie die folgenden:

filegroup(
    name = "portable_extended_ops_headers",
    srcs = [
        ...

+       "string_util.h",

        ...
    ],
)

(2) Fügen Sie den Betreibernamen der Liste der zulässigen Personen hinzu.

Die zulässige Liste wird in dem definierten tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Der Name des TensorFlow-Kernoperators muss aufgeführt werden, um über die Option TF auswählen zugelassen zu werden.

static const std::set<std::string>* allowlisted_flex_ops =
    new std::set<std::string>({
        ...

+       "StringToNumber",

        ...
    });

Da die obige Liste alphabetisch sortiert ist, stellt sie sicher, dass der Name an der richtigen Stelle platziert wird.

(3) Fügen Sie dieser Anleitungsseite den Betreibernamen hinzu.

Um den anderen Entwicklern die Einbeziehung des Betreibers zu zeigen, sollte auch diese Anleitungsseite aktualisiert werden. Diese Seite wird in der Lage 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`
...

Da die obige Liste alphabetisch sortiert ist, stellt sie sicher, dass der Name an der richtigen Stelle platziert wird.