ช่วยปกป้อง Great Barrier Reef กับ TensorFlow บน Kaggle เข้าร่วมท้าทาย

รองรับตัวดำเนินการ Select TensorFlow

ตัวดำเนินการหลักของ TensorFlow

ต่อไปนี้คือรายการของการดำเนินการหลักของ TensorFlow ที่ได้รับการสนับสนุนโดยรันไทม์ TensorFlow Lite พร้อมคุณสมบัติ Select TensorFlow Ops

ตัวดำเนินการข้อความและประโยค TensorFlow

ต่อไปนี้ TensorFlow ข้อความ และ SentencePiece ผู้ประกอบการได้รับการสนับสนุนถ้าคุณใช้ API งูใหญ่สำหรับการแปลงและนำเข้าห้องสมุดเหล่านั้น

ตัวดำเนินการ TF.Text:

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

ตัวดำเนินการประโยคPiece:

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

ข้อมูลโค้ดต่อไปนี้แสดงวิธีการแปลงโมเดลด้วยโอเปอเรเตอร์ด้านบน:

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

ในด้านรันไทม์ จำเป็นต้องเชื่อมโยงไลบรารี TensorFlow Text หรือ SentencePiece เข้ากับแอปหรือไบนารีในขั้นสุดท้าย

ตัวดำเนินการที่กำหนดโดยผู้ใช้

ถ้าคุณ สร้างผู้ประกอบการ TensorFlow ของคุณเอง คุณยังสามารถแปลงรูปแบบที่มีให้พวกเขา TensorFlow Lite โดยรายชื่อผู้ประกอบการจำเป็นต้องใช้ใน experimental_select_user_tf_ops ดังต่อไปนี้:

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

ทางด้านรันไทม์ จำเป็นต้องเชื่อมโยงไลบรารีโอเปอเรเตอร์ของคุณกับแอพหรือไบนารีสุดท้าย

เพิ่มตัวดำเนินการหลักของ TensorFlow ในรายการที่อนุญาต

ถ้าคุณกดกรณีที่ผู้ประกอบการ TensorFlow หลักไม่ได้อยู่ในที่ได้รับอนุญาตดังกล่าวข้างต้น รายการ คุณสามารถรายงานการร้องขอคุณสมบัติที่ นี่ มีชื่อของผู้ประกอบการ TensorFlow หลักที่ไม่ได้ระบุไว้ในรายการที่ได้รับอนุญาต

คุณยังสามารถสร้างคำขอดึงของคุณเองจากซอร์สโค้ดได้อีกด้วย ตัวอย่างเช่นถ้าคุณต้องการที่จะเพิ่ม raw_ops.StringToNumber สหกรณ์ในรายการที่ได้รับอนุญาตมีสามสถานที่ที่จะปรับปรุงเช่นนี้ กระทำ

(1) เพิ่มรหัสผู้ประกอบการมาเคอร์เนลไป portable_extended_ops_group2 กฎ BUILD

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

        ...
    ],
)

เพื่อที่จะหาไฟล์มาเคอร์เนลประกอบ relvant ภายใต้ tensorflow/core/kernels ไดเรกทอรีคุณสามารถค้นหาสถานที่รหัสแหล่งที่มาซึ่งมีการประกาศเคอร์เนลต่อไปนี้ด้วยชื่อผู้ประกอบการ:

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

หากมีส่วนหัวของไฟล์ใด ๆ ภายใต้ tensorflow/core/kernels ไดเรกทอรีที่จำเป็นในรหัสผู้ประกอบการมาเคอร์เนล, คุณจะต้องเพิ่มไฟล์ส่วนหัวเข้าไปใน portable_extended_ops_headers กฎ BUILD ดังนี้

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

        ...
    ],
)

(2) เพิ่มชื่อตัวดำเนินการในรายการที่อนุญาต

รายการที่ได้รับอนุญาตถูกกำหนดไว้ใน tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc ต้องระบุชื่อตัวดำเนินการหลักของ TensorFlow เพื่อให้อนุญาตผ่านตัวเลือก Select TF

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

        ...
    });

เนื่องจากรายการด้านบนจัดเรียงตามลำดับตัวอักษร จึงมั่นใจได้ว่าจะวางชื่อไว้ถูกที่

(3) เพิ่มชื่อผู้ปฏิบัติงานในหน้าคำแนะนำนี้

หากต้องการแสดงการรวมตัวดำเนินการกับนักพัฒนารายอื่น หน้าคู่มือนี้ควรได้รับการอัปเดตด้วย หน้านี้ตั้งอยู่ที่ 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`
...

เนื่องจากรายการด้านบนจัดเรียงตามลำดับตัวอักษร จึงมั่นใจได้ว่าจะวางชื่อไว้ถูกที่