TensorFlow Lite สนับสนุนการดำเนินการ TensorFlow จำนวนหนึ่งที่ใช้ในแบบจำลองการอนุมานทั่วไป ในขณะที่ประมวลผลโดย TensorFlow Lite Optimizing Converter การดำเนินการเหล่านั้นอาจถูกแยกออกหรือหลอมรวมกันก่อนที่การดำเนินการที่รองรับจะถูกแมปกับคู่ของ TensorFlow Lite
เนื่องจากไลบรารีตัวดำเนินการในตัว TensorFlow Lite สนับสนุนตัวดำเนินการ TensorFlow ในจำนวน จำกัด เท่านั้นไม่ใช่ทุกรุ่นที่สามารถแปลงสภาพได้ แม้สำหรับการดำเนินการที่รองรับบางครั้งก็คาดว่าจะมีรูปแบบการใช้งานที่เฉพาะเจาะจงมากด้วยเหตุผลด้านประสิทธิภาพ เราคาดว่าจะขยายชุดปฏิบัติการที่รองรับในรุ่น TensorFlow Lite ในอนาคต
วิธีที่ดีที่สุดในการทำความเข้าใจวิธีสร้างแบบจำลอง TensorFlow ที่สามารถใช้กับ TensorFlow Lite ได้คือการพิจารณาอย่างรอบคอบว่าการดำเนินการได้รับการแปลงและปรับให้เหมาะสมอย่างไรพร้อมกับข้อ จำกัด ที่กำหนดโดยกระบวนการนี้
ประเภทที่รองรับ
การดำเนินการ TensorFlow Lite ส่วนใหญ่กำหนดเป้าหมายทั้งการอนุมานแบบทศนิยม ( float32
) และการอนุมานเชิงปริมาณ ( uint8
, int8
) แต่ตัวเลือกจำนวนมากยังไม่มีสำหรับประเภทอื่น ๆ เช่น tf.float16
และสตริง
นอกเหนือจากการใช้การดำเนินการในเวอร์ชันที่แตกต่างกันแล้วความแตกต่างอื่น ๆ ระหว่างแบบจำลองจุดลอยตัวและแบบจำลองเชิงปริมาณก็คือวิธีการแปลง การแปลงเชิงปริมาณต้องการข้อมูลช่วงไดนามิกสำหรับเทนเซอร์ สิ่งนี้ต้องใช้ "การหาปริมาณปลอม" ในระหว่างการฝึกโมเดลการรับข้อมูลช่วงผ่านชุดข้อมูลการสอบเทียบหรือทำการประมาณค่าช่วงแบบ "ทันที" ดู ปริมาณ
การดำเนินการที่รองรับและข้อ จำกัด
TensorFlow Lite สนับสนุนชุดย่อยของการดำเนินการ TensorFlow โดยมีข้อ จำกัด บางประการ สำหรับรายการการดำเนินการและข้อ จำกัด ทั้งหมดโปรดดูที่หน้า TF Lite Ops
การแปลงแบบตรงไปตรงมาการพับคงที่และการหลอมรวม
การดำเนินการ TensorFlow จำนวนหนึ่งสามารถประมวลผลได้โดย TensorFlow Lite แม้ว่าจะไม่มีการเทียบเท่าโดยตรงก็ตาม นี่เป็นกรณีของการดำเนินการที่สามารถลบออกจากกราฟ ( tf.identity
) แทนที่ด้วยเทนเซอร์ ( tf.placeholder
) หรือหลอมรวมเข้ากับการดำเนินการที่ซับซ้อนมากขึ้น ( tf.nn.bias_add
) แม้แต่การดำเนินการที่สนับสนุนบางอย่างบางครั้งก็อาจถูกลบออกโดยใช้กระบวนการเหล่านี้
นี่คือรายการการดำเนินการ TensorFlow ที่ไม่ครบถ้วนสมบูรณ์ซึ่งมักจะถูกลบออกจากกราฟ:
-
tf.add
-
tf.check_numerics
-
tf.constant
-
tf.div
-
tf.divide
-
tf.fake_quant_with_min_max_args
-
tf.fake_quant_with_min_max_vars
-
tf.identity
tf.maximum
tf.minimum
-
tf.multiply
-
tf.no_op
-
tf.placeholder
-
tf.placeholder_with_default
-
tf.realdiv
-
tf.reduce_max
-
tf.reduce_min
-
tf.reduce_sum
-
tf.rsqrt
-
tf.shape
-
tf.sqrt
-
tf.square
-
tf.subtract
-
tf.tile
-
tf.nn.batch_norm_with_global_normalization
-
tf.nn.bias_add
-
tf.nn.fused_batch_norm
-
tf.nn.relu
-
tf.nn.relu6
ปฏิบัติการทดลอง
มีการดำเนินการ TensorFlow Lite ต่อไปนี้ แต่ยังไม่พร้อมสำหรับโมเดลที่กำหนดเอง:
-
CALL
-
CONCAT_EMBEDDINGS
-
CUSTOM
-
EMBEDDING_LOOKUP_SPARSE
-
HASHTABLE_LOOKUP
-
LSH_PROJECTION
-
SKIP_GRAM
-
SVDF