Hari Komunitas ML adalah 9 November! Bergabung dengan kami untuk update dari TensorFlow, JAX, dan lebih Pelajari lebih lanjut

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

Berikut TensorFlow Teks dan SentencePiece operator yang didukung jika Anda menggunakan API Python untuk konversi dan impor perpustakaan 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 Anda sendiri , Anda juga dapat mengkonversi model yang mengandung mereka untuk TensorFlow Lite dengan daftar operator yang diperlukan dalam 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 menekan kasus di mana operator TensorFlow inti tidak dalam diperbolehkan di atas daftar , Anda dapat melaporkan permintaan fitur di sini dengan nama-nama operator TensorFlow inti, tidak tercantum dalam daftar diperbolehkan.

Anda juga dapat membuat sendiri permintaan tarik Anda dari kode sumber. Misalnya, jika Anda ingin menambahkan raw_ops.StringToNumber op dalam daftar diperbolehkan, ada tiga tempat untuk pembaruan seperti ini komit .

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

filegroup(
    name = "portable_extended_ops_group2",
    srcs = [
        ...

+       "string_to_number_op.cc",

        ...
    ],
)

Dalam rangka untuk mencari operator relvant file sumber kernel di bawah tensorflow/core/kernels direktori, Anda dapat mencari lokasi source code, yang berisi deklarasi kernel berikut dengan nama operator yang:

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

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

filegroup(
    name = "portable_extended_ops_headers",
    srcs = [
        ...

+       "string_util.h",

        ...
    ],
)

(2) Tambahkan nama operator ke daftar yang diizinkan.

Daftar diperbolehkan 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.