Operator TensorFlow Pilihan yang didukung

Operator inti TensorFlow

Berikut ini 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 pustaka tersebut.

Operator TF.Teks:

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

Operator Kalimat:

  • 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, pustaka TensorFlow Text atau SentencePiece juga perlu ditautkan ke aplikasi atau biner akhir.

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, Anda juga perlu menautkan pustaka operator Anda ke aplikasi atau biner akhir.

Tambahkan operator inti TensorFlow ke daftar yang diizinkan.

Jika Anda mengalami 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 permintaan tarik sendiri dari kode sumber. Misalnya, jika Anda ingin menambahkan operasi raw_ops.StringToNumber ke 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 direktori 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 direktori 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 ditentukan di tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Nama operator inti TensorFlow perlu 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 berdasarkan 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 berdasarkan abjad, pastikan untuk menempatkan nama di tempat yang tepat.