ความเข้ากันได้ของตัวดำเนินการ TensorFlow Lite และ TensorFlow

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 ที่ไม่ครบถ้วนสมบูรณ์ซึ่งมักจะถูกลบออกจากกราฟ:

ปฏิบัติการทดลอง

มีการดำเนินการ TensorFlow Lite ต่อไปนี้ แต่ยังไม่พร้อมสำหรับโมเดลที่กำหนดเอง:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF