Operator TensorFlow Pilih yang Didukung

Operator inti TensorFlow

Berikut adalah daftar lengkap operasi inti TensorFlow yang didukung oleh runtime TensorFlow Lite dengan fitur Select TensorFlow Ops.

Operator Teks TensorFlow dan SentencePiece

Operator TensorFlow Text dan SentencePiece berikut didukung jika Anda menggunakan Python API untuk konversi dan mengimpor library tersebut.

TF. Operator teks:

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

Operator SentencePiece:

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

Cuplikan berikut menunjukkan cara mengonversi model dengan operator di atas:

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

Di sisi waktu proses, juga diperlukan untuk menautkan pustaka Teks TensorFlow atau SentencePiece ke dalam aplikasi atau biner final.

Operator yang ditentukan pengguna

Jika Anda membuat operator TensorFlow sendiri , Anda juga dapat mengonversi model yang berisi operator tersebut ke TensorFlow Lite dengan mencantumkan operator yang diperlukan di experimental_select_user_tf_ops sebagai berikut:

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

Di sisi runtime, juga diperlukan untuk menautkan pustaka operator Anda ke dalam aplikasi atau biner final.

Tambahkan operator inti TensorFlow ke daftar yang diizinkan.

Jika Anda menemukan kasus di mana operator inti TensorFlow tidak ada dalam daftar yang diizinkan di atas , Anda dapat melaporkan permintaan fitur di sini dengan nama operator inti TensorFlow, yang tidak tercantum dalam daftar yang diizinkan.

Anda juga dapat membuat sendiri permintaan tarik Anda dari kode sumber. Misalnya, jika Anda ingin menambahkan operasi raw_ops.StringToNumber dalam daftar yang diizinkan, ada tiga tempat untuk memperbarui seperti komit ini.

(1) Tambahkan kode sumber kernel operator ke aturan BUILD portable_extended_ops_group2 .

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

        ...
    ],
)

Untuk menemukan file sumber kernel operator yang relevan di bawah tensorflow/core/kernels , Anda dapat mencari lokasi kode sumber, yang berisi deklarasi kernel berikut dengan nama operator:

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

Jika ada file header di bawah tensorflow/core/kernels , yang diperlukan dalam kode sumber kernel operator, Anda perlu menambahkan file header ke dalam aturan BUILD portable_extended_ops_headers sebagai berikut:

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

        ...
    ],
)

(2) Tambahkan nama operator ke daftar yang diizinkan.

Daftar yang diizinkan didefinisikan dalam tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Nama operator inti TensorFlow harus dicantumkan agar diizinkan melalui opsi Pilih TF.

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

        ...
    });

Karena daftar di atas diurutkan dalam urutan abjad, pastikan untuk menempatkan nama di tempat yang tepat.

(3) Tambahkan nama operator ke halaman panduan ini.

Untuk menunjukkan penyertaan operator kepada pengembang lain, halaman panduan ini juga harus diperbarui. Halaman ini terletak di 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`
...

Karena daftar di atas diurutkan dalam urutan abjad, pastikan untuk menempatkan nama di tempat yang tepat.