Desteklenen Seçili TensorFlow operatörleri

TensorFlow çekirdek operatörleri

Aşağıda, Select TensorFlow Ops özelliği ile TensorFlow Lite çalışma zamanı tarafından desteklenen TensorFlow temel işlemlerinin kapsamlı bir listesi bulunmaktadır.

TensorFlow Text ve SentencePiece operatörleri

Aşağıdaki TensorFlow Text ve SentencePiece operatörleri, bu kitaplıkları dönüştürmek ve içe aktarmak için Python API'yi kullanırsanız desteklenir.

TF.Text operatörleri:

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

Cümle Parçası operatörleri:

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

Aşağıdaki kod parçası, modellerin yukarıdaki operatörlerle nasıl dönüştürüleceğini gösterir:

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

Çalışma zamanı tarafında TensorFlow Text veya SentencePiece kitaplığını son uygulamaya veya ikili dosyaya bağlamak da gereklidir.

Kullanıcının tanımladığı Operatörler

Kendi TensorFlow operatörlerinizi oluşturduysanız , bunları içeren modelleri, experimental_select_user_tf_ops gerekli operatörleri aşağıdaki gibi listeleyerek TensorFlow Lite'a da dönüştürebilirsiniz:

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

Çalışma zamanı tarafında, operatör kitaplığınızı son uygulamaya veya ikili programa bağlamanız da gerekir.

TensorFlow çekirdek operatörlerini izin verilenler listesine ekleyin.

TensorFlow çekirdek operatörlerinin yukarıdaki izin verilenler listesinde olmadığı bir durumla karşılaşırsanız, özellik isteğini burada , izin verilenler listesinde yer almayan TensorFlow çekirdek operatörlerinin adlarıyla birlikte bildirebilirsiniz.

Kaynak kodundan kendi çekme isteğinizi de oluşturabilirsiniz. Örneğin raw_ops.StringToNumber op'unu izin verilenler listesine eklemek istiyorsanız bu commit gibi güncellenecek üç yer vardır.

(1) Operatör çekirdeği kaynak kodunu portable_extended_ops_group2 BUILD kuralına ekleyin.

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

        ...
    ],
)

İlgili operatör çekirdeği kaynak dosyasını tensorflow/core/kernels dizini altında bulmak için operatör adı ile birlikte aşağıdaki çekirdek bildirimini içeren kaynak kod konumunu arayabilirsiniz:

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

tensorflow/core/kernels dizini altında, operatör çekirdeği kaynak kodunda gerekli olan herhangi bir başlık dosyası varsa, başlık dosyasını portable_extended_ops_headers BUILD kuralına aşağıdaki gibi eklemeniz gerekir:

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

        ...
    ],
)

(2) Operatör adını izin verilenler listesine ekleyin.

İzin verilen liste tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc dosyasında tanımlanır. TF Seç seçeneğiyle izin verilebilmesi için TensorFlow çekirdek operatör adının listelenmesi gerekir.

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

        ...
    });

Yukarıdaki liste alfabetik sıraya göre sıralandığından ismin doğru yere yerleştirilmesini sağlar.

(3) Operatör adını bu kılavuz sayfasına ekleyin.

Operatörün dahil edildiğini diğer geliştiricilere göstermek için bu kılavuz sayfasının da güncellenmesi gerekir. Bu sayfa tensorflow/lite/g3doc/guide/op_select_allowlist.md adresinde bulunur.

## 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`
...

Yukarıdaki liste alfabetik sıraya göre sıralandığından ismin doğru yere yerleştirilmesini sağlar.