Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Tensorflow สามารถใช้สร้างคู่โดยใช้เส้นทางไฟล์สำหรับชุดข้อมูลดอกไม้ได้อย่างไร


ในการสร้างคู่ (รูปภาพ ป้ายกำกับ) เส้นทางจะถูกแปลงเป็นรายการส่วนประกอบเส้นทางก่อน จากนั้น ค่าที่สองถึงค่าสุดท้ายจะถูกเพิ่มไปยังไดเร็กทอรี จากนั้น ป้ายกำกับจะถูกเข้ารหัสเป็นรูปแบบจำนวนเต็ม สตริงที่บีบอัดจะถูกแปลงเป็นเมตริกซ์ จากนั้นจึงเปลี่ยนรูปร่างเป็นขนาดที่ต้องการ

อ่านเพิ่มเติม: TensorFlow คืออะไรและ Keras ทำงานร่วมกับ TensorFlow เพื่อสร้าง Neural Networks อย่างไร

เราจะใช้ชุดข้อมูลดอกไม้ซึ่งมีรูปภาพดอกไม้หลายพันดอก ประกอบด้วยไดเร็กทอรีย่อย 5 ไดเร็กทอรี และมีไดเร็กทอรีย่อยหนึ่งไดเร็กทอรีสำหรับทุกคลาส

เรากำลังใช้ Google Colaboratory เพื่อเรียกใช้โค้ดด้านล่าง Google Colab หรือ Colaboratory ช่วยเรียกใช้โค้ด Python บนเบราว์เซอร์และไม่ต้องมีการกำหนดค่าใดๆ และเข้าถึง GPU ได้ฟรี (หน่วยประมวลผลกราฟิก) Colaboratory ถูกสร้างขึ้นบน Jupyter Notebook

print("Function to convert file path to (image,label) pair")
print("First, path is converted to list of path components")
print("Then, the second to last value is added to class directory")
print("The label is integer encoded")
def get_label(file_path):
   parts = tf.strings.split(file_path, os.path.sep)
   one_hot = parts[-2] == class_names
   return tf.argmax(one_hot)

print("The compressed string is converted to a 3 dimensional int tensor")
print("The image is resized to the required size")
def decode_img(img):
   img = tf.image.decode_jpeg(img, channels=3)
   return tf.image.resize(img, [img_height, img_width])

print("The raw data is loaded from the file as a string value")
def process_path(file_path):
   label = get_label(file_path)
   img = tf.io.read_file(file_path)
   img = decode_img(img)
   return img, label

เครดิตโค้ด:https://www.tensorflow.org/tutorials/load_data/images

ผลลัพธ์

Function to convert file path to (image,label) pair
First, path is converted to list of path components
Then, the second to last value is added to class directory
The label is integer encoded
The compressed string is converted to a 3 dimensional int tensor
The image is resized to the required size
The raw data is loaded from the file as a string value

คำอธิบาย

  • มีการกำหนดฟังก์ชัน 'get_label' ซึ่งจะแปลงเส้นทางของไฟล์เป็นคู่ (รูปภาพ ป้ายกำกับ)
  • พาธของไฟล์ถูกแปลงเป็นรายการส่วนประกอบของพาธ
  • ค่าที่สองถึงค่าสุดท้ายถูกเพิ่มไปยังไดเร็กทอรีคลาส
  • ถัดไป ป้ายกำกับจะถูกเข้ารหัสเป็นจำนวนเต็ม
  • ใช้ฟังก์ชันอื่นชื่อ 'decode_img' เพื่อปรับขนาดอิมเมจและส่งคืน
  • ขั้นแรก สตริงที่บีบอัดจะถูกแปลงเป็นเทนเซอร์จำนวนเต็มสามมิติ แล้วจึงปรับขนาด
  • มีการกำหนดฟังก์ชันอื่นชื่อ 'process_path' ซึ่งโหลดข้อมูลดิบจากไฟล์เป็นค่าสตริง