Google I/O bir tamamlamadır! TensorFlow oturumlarını takip edin Oturumları görüntüleyin

Desteklenen TensorFlow operatörlerini seçin

TensorFlow çekirdek operatörleri

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

TensorFlow Metin 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'sini 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ı, yukarıdaki operatörlere sahip modellerin 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ın son uygulamaya veya ikili dosyaya bağlanması da gerekir.

Kullanıcı tanımlı Operatörler

Kendi TensorFlow operatörlerinizi oluşturduysanız , ayrıca gerekli operatörleri experimental_select_user_tf_ops içinde aşağıdaki gibi listeleyerek bunları içeren modelleri TensorFlow Lite'a 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 dosyaya bağlamanız da gerekir.

İzin verilenler listesine TensorFlow çekirdek operatörlerini ekleyin.

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

Ayrıca kaynak kodundan kendi çekme isteğinizi oluşturabilirsiniz. Örneğin, raw_ops.StringToNumber izin verilenler listesine eklemek istiyorsanız, bu commit gibi güncelleme yapılacak üç yer vardır.

(1) Operatör çekirdek 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 çekirdek kaynak dosyasını tensorflow/core/kernels dizini altında bulmak için, operatör adıyla aşağıdaki çekirdek bildirimini içeren kaynak kodu konumunu arayabilirsiniz:

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

Operatör çekirdek kaynak kodunda gerekli olan tensorflow/core/kernels dizini altında 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 içinde tanımlanmıştır. Select TF seçeneği aracılığıyla 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 olarak sıralandığından, ismin doğru yere yerleştirilmesini sağlar.

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

Operatör katılımını diğer geliştiricilere göstermek için bu kılavuz sayfası da güncellenmelidir. Bu sayfa 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`
...

Yukarıdaki liste alfabetik olarak sıralandığından, ismin doğru yere yerleştirilmesini sağlar.