समर्थित TensorFlow ऑपरेटरों का चयन करें

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

TensorFlow कोर ऑपरेटर

निम्नलिखित TensorFlow कोर संचालन की एक विस्तृत सूची है जो TensorFlow लाइट रनटाइम द्वारा चयनित TensorFlow Ops सुविधा के साथ समर्थित है।

TensorFlow टेक्स्ट और सेंटेंसपीस ऑपरेटर्स

यदि आप रूपांतरण के लिए पायथन एपीआई का उपयोग करते हैं और उन पुस्तकालयों को आयात करते हैं तो निम्नलिखित TensorFlow टेक्स्ट और सेंटेंसपीस ऑपरेटर समर्थित हैं।

TF.पाठ ऑपरेटर:

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

सेंटेंसपीस ऑपरेटर:

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

निम्नलिखित स्निपेट दिखाता है कि उपरोक्त ऑपरेटरों के साथ मॉडल कैसे परिवर्तित करें:

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

रनटाइम की तरफ, TensorFlow Text या SentencePiece लाइब्रेरी को अंतिम ऐप या बाइनरी में लिंक करना भी आवश्यक है।

उपयोगकर्ता के परिभाषित ऑपरेटर

यदि आपने अपना स्वयं का TensorFlow ऑपरेटर बनाया है , तो आप निम्न के रूप में experimental_select_user_tf_ops select_user_tf_ops में आवश्यक ऑपरेटरों को सूचीबद्ध करके उन मॉडलों को TensorFlow Lite में परिवर्तित कर सकते हैं:

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

रनटाइम साइड पर, अपने ऑपरेटर लाइब्रेरी को अंतिम ऐप या बाइनरी में लिंक करना भी आवश्यक है।

TensorFlow कोर ऑपरेटरों को अनुमत सूची में जोड़ें।

यदि आप उस मामले को हिट करते हैं जहां TensorFlow कोर ऑपरेटर उपरोक्त अनुमत सूची में नहीं हैं, तो आप यहां TensorFlow कोर ऑपरेटरों के नाम के साथ फीचर अनुरोध की रिपोर्ट कर सकते हैं, जो अनुमत सूची में सूचीबद्ध नहीं है।

आप स्रोत कोड से अपना स्वयं का पुल अनुरोध भी बना सकते हैं। उदाहरण के लिए, यदि आप अनुमत सूची में raw_ops.StringToNumber op जोड़ना चाहते हैं, तो इस तरह से अपडेट करने के लिए तीन स्थान हैं।

(1) ऑपरेटर कर्नेल सोर्स कोड को portable_extended_ops_group2 2 बिल्ड नियम में जोड़ें।

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

        ...
    ],
)

tensorflow/core/kernels निर्देशिका के अंतर्गत संबंधित ऑपरेटर कर्नेल स्रोत फ़ाइल को खोजने के लिए, आप स्रोत कोड स्थान खोज सकते हैं, जिसमें ऑपरेटर नाम के साथ निम्नलिखित कर्नेल घोषणा शामिल है:

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

यदि ऑपरेटर कर्नेल स्रोत कोड में आवश्यक tensorflow/core/kernels निर्देशिका के अंतर्गत कोई हेडर फ़ाइलें हैं, तो आपको हेडर फ़ाइल को portable_extended_ops_headers बिल्ड नियम में निम्नानुसार जोड़ना होगा:

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

        ...
    ],
)

(2) अनुमत सूची में ऑपरेटर का नाम जोड़ें।

अनुमत सूची को tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc में परिभाषित किया गया है। TensorFlow कोर ऑपरेटर नाम को TF विकल्प के माध्यम से अनुमति देने के लिए सूचीबद्ध करने की आवश्यकता है।

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

        ...
    });

चूंकि उपरोक्त सूची को वर्णानुक्रम में क्रमबद्ध किया गया है, इसलिए यह नाम को सही जगह पर रखना सुनिश्चित करता है।

(3) इस गाइड पेज में ऑपरेटर का नाम जोड़ें।

अन्य डेवलपर्स को ऑपरेटर समावेशन दिखाने के लिए, इस गाइड पेज को भी अपडेट किया जाना चाहिए। यह पृष्ठ 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`
...

चूंकि उपरोक्त सूची को वर्णानुक्रम में क्रमबद्ध किया गया है, इसलिए यह नाम को सही जगह पर रखना सुनिश्चित करता है।