มีน้องหลังไมค์เข้ามาถาม ว่าในการอ่านรูปภาพมาเรียนรู้ด้วยโมเดล (ในกรณีของน้องต้องการทำโมเดล GAN) ต้องใช้ TFRecords หรือไม่ เพราะเห็นว่า Tfds หรือ dataset อย่างเป็นทางการของ TF เก็บด้วย format นี้
ขอตอบอย่างนี้ครับ
-----
สวัสดีตอนเช้าครับ ขอเล่าแบบนี้ครับผม TFRecords เป็น format เก็บข้อมูลที่ีมีประสิทธิภาพที่สุดของ tensorflow ดังนั้นใน tfds จะเก็บรูปภาพใน format นี้ อย่างไรก็ดีตอนโหลดขึ้นมาใช้งานโดยปกติเราจะเขียน parser แล้วก็ใช้ tf.data.dataset โหลดมาใช้งาน (รวมทั้ง batching , shuffle, etc.) ในกรณี tfds.load อาจจะทำกระบวนการเหล่านี้ให้เราทั้งหมด จึงเป็น ready-to-use
ทว่าการเขียน TFRecords และการเขียน parser ต้องเขียนโค้ดเพิ่ม ซึ่งพี่คิดว่ามีรายละเอียดเพิ่ม (แลกกับประสิทธิภาพที่ได้รับ) พี่คิดว่าตอนเราเริ่มทดลองเขียนโค้ด เราอาจจะเน้นพัฒนาส่วนอื่นเช่นโมเดลไปก่อน โดยในส่วนของ data อาจจะยังไม่ต้องทำ TFRecords ก็ได้ครับ (ค่อยมาทำทีหลังตอนต้องการ optimize ความเร็ว)
แล้วจะทำอย่างไรได้บ้าง
ใน tutorial นี้สอนว่าทำได้อีก 2 วิธีครับ วิธีที่ง่ายที่สุดคือใช้ keras utils https://www.tensorflow.org/tutorials/load_data/images#load_data_using_a_keras_utility
ซึ่งจะ control ได้น้อยกว่าวิธีข้างล่าง
อีกวิธีคือ ใช้ tf.data.dataset ร่วมกับ tf.io.read_file ซึ่งดูได้จากตัวอย่างนี้ครับ https://www.tensorflow.org/tutorials/load_data/images#using_tfdata_for_finer_control
ซึ่งเมื่อรวมกับ functionalities ของ tf.data แล้วก็จะสามารถจัด format ของรูปภาพของน้องให้เป็นแบบเดียวกันกับในตัวอย่าง GAN ได้ครับผม โดยอาจต้องไปเรียนรู้ tf.data ให้คล่องครับ