Tham dự Hội nghị chuyên đề Women in ML vào ngày 7 tháng 12 Đăng ký ngay

Các toán tử TensorFlow được chọn được hỗ trợ

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Toán tử lõi TensorFlow

Sau đây là danh sách đầy đủ các hoạt động cốt lõi của TensorFlow được hỗ trợ bởi thời gian chạy TensorFlow Lite với tính năng Chọn TensorFlow Ops.

Các toán tử TensorFlow Văn bản và Văn bản Câu

Các toán tử TensorFlow Văn bản và Thị phần sau được hỗ trợ nếu bạn sử dụng API Python để chuyển đổi và nhập các thư viện đó.

Toán tử TF.Text:

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

Các toán tử câu lệnh:

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

Đoạn mã sau đây cho biết cách chuyển đổi mô hình bằng các toán tử ở trên:

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

Về phía thời gian chạy, cũng cần phải liên kết thư viện TensorFlow Text hoặc CâuP mảnh với ứng dụng cuối cùng hoặc tệp nhị phân.

Các toán tử do người dùng xác định

Nếu bạn đã tạo các toán tử TensorFlow của riêng mình , bạn cũng có thể chuyển đổi các mô hình có chứa chúng thành TensorFlow Lite bằng cách liệt kê các toán tử bắt buộc trong experimental_select_user_tf_ops như sau:

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

Về phía thời gian chạy, cũng cần phải liên kết thư viện toán tử của bạn với ứng dụng cuối cùng hoặc tệp nhị phân.

Thêm toán tử lõi TensorFlow vào danh sách được phép.

Nếu bạn gặp phải trường hợp các toán tử lõi TensorFlow không có trong danh sách được phép ở trên, bạn có thể báo cáo yêu cầu tính năng tại đây với tên của các toán tử lõi TensorFlow, không được liệt kê trong danh sách được phép.

Bạn cũng có thể tạo yêu cầu kéo của riêng mình từ mã nguồn. Ví dụ: nếu bạn muốn thêm op raw_ops.StringToNumber trong danh sách được phép, có ba nơi để cập nhật như cam kết này.

(1) Thêm mã nguồn hạt nhân của toán tử vào quy tắc portable_extended_ops_group2 BUILD.

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

        ...
    ],
)

Để tìm tệp nguồn hạt nhân toán tử có liên quan trong thư mục tensorflow/core/kernels , bạn có thể tìm kiếm vị trí mã nguồn, nơi chứa khai báo hạt nhân sau với tên toán tử:

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

Nếu có bất kỳ tệp tiêu đề nào trong thư mục tensorflow/core/kernels , được yêu cầu trong mã nguồn hạt nhân của toán tử, bạn cần thêm tệp tiêu đề vào quy tắc portable_extended_ops_headers BUILD như sau:

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

        ...
    ],
)

(2) Thêm tên nhà điều hành vào danh sách được phép.

Danh sách được phép được xác định trong tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . Tên toán tử lõi TensorFlow cần được liệt kê để được phép thông qua tùy chọn Chọn TF.

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

        ...
    });

Vì danh sách trên được sắp xếp theo thứ tự bảng chữ cái, nó đảm bảo đặt tên ở đúng vị trí.

(3) Thêm tên nhà điều hành vào trang hướng dẫn này.

Để hiển thị sự bao gồm nhà điều hành cho các nhà phát triển khác, trang hướng dẫn này cũng nên được cập nhật. Trang này được đặt tại 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`
...

Vì danh sách trên được sắp xếp theo thứ tự bảng chữ cái, nó đảm bảo đặt tên ở đúng vị trí.