สามารถใช้การเสริมเพื่อลดการฟิตเกินไปโดยการเพิ่มข้อมูลการฝึกอบรมเพิ่มเติม ทำได้โดยการสร้างโมเดลตามลำดับที่ใช้เลเยอร์ "RandomFlip"
อ่านเพิ่มเติม: TensorFlow คืออะไรและ Keras ทำงานร่วมกับ TensorFlow เพื่อสร้าง Neural Networks อย่างไร
เราจะใช้ Keras Sequential API ซึ่งมีประโยชน์ในการสร้างแบบจำลองตามลำดับที่ใช้ในการทำงานกับสแต็กเลเยอร์ธรรมดา โดยที่ทุกเลเยอร์มีอินพุตเทนเซอร์หนึ่งตัวและเอาต์พุตเทนเซอร์หนึ่งรายการ
โครงข่ายประสาทเทียมที่มีอย่างน้อยหนึ่งชั้นเรียกว่าชั้น Convolutional เราสามารถใช้ Convolutional Neural Network เพื่อสร้างแบบจำลองการเรียนรู้
ตัวแยกประเภทรูปภาพถูกสร้างขึ้นโดยใช้โมเดล keras.Sequential และโหลดข้อมูลโดยใช้ preprocessing.image_dataset_from_directory ข้อมูลถูกโหลดออกจากดิสก์อย่างมีประสิทธิภาพ มีการระบุการใส่มากเกินไปและมีการใช้เทคนิคเพื่อบรรเทาปัญหาดังกล่าว เทคนิคเหล่านี้รวมถึงการเสริมข้อมูลและการออกกลางคัน มีภาพดอกไม้ 3700 ดอก ชุดข้อมูลนี้มีไดเร็กทอรีย่อย 5 ไดเร็กทอรี และมีไดเร็กทอรีย่อยหนึ่งไดเร็กทอรีต่อคลาส คือ:
เดซี่ ดอกแดนดิไลออน ดอกกุหลาบ ทานตะวัน และทิวลิป
เรากำลังใช้ Google Colaboratory เพื่อเรียกใช้โค้ดด้านล่าง Google Colab หรือ Colaboratory ช่วยเรียกใช้โค้ด Python บนเบราว์เซอร์และไม่ต้องมีการกำหนดค่าใดๆ และเข้าถึง GPU ได้ฟรี (หน่วยประมวลผลกราฟิก) Colaboratory ถูกสร้างขึ้นบน Jupyter Notebook
เมื่อตัวอย่างการฝึกมีจำนวนน้อย แบบจำลองจะเรียนรู้จากเสียงรบกวนหรือรายละเอียดที่ไม่ต้องการจากตัวอย่างการฝึก สิ่งนี้ส่งผลเสียต่อประสิทธิภาพของโมเดลต่อตัวอย่างใหม่
เนื่องจากมีการใส่มากเกินไป โมเดลจะไม่สามารถสรุปได้ดีในชุดข้อมูลใหม่ มีหลายวิธีที่สามารถหลีกเลี่ยงการสวมใส่มากเกินไปได้ เราจะใช้การเสริมข้อมูลเพื่อเอาชนะการ overfitting การเสริมข้อมูลจะสร้างข้อมูลการฝึกอบรมเพิ่มเติมจากตัวอย่างที่มีอยู่โดยการเพิ่มข้อมูลโดยใช้การแปลงแบบสุ่มซึ่งจะทำให้ได้ภาพที่ดูน่าเชื่อ
ซึ่งช่วยให้โมเดลเปิดเผยข้อมูลในแง่มุมต่างๆ มากขึ้น ซึ่งช่วยให้โมเดลมีภาพรวมที่ดีขึ้น ต่อไปนี้เป็นตัวอย่าง:
ตัวอย่าง
print("Using data augmentation to eliminate overfitting") data_augmentation = keras.Sequential( [ layers.experimental.preprocessing.RandomFlip("horizontal",input_shape=(img_height, img_width,3)), layers.experimental.preprocessing.RandomRotation(0.1), layers.experimental.preprocessing.RandomZoom(0.1), ] )
เครดิตโค้ด −https://www.tensorflow.org/tutorials/images/classification
ผลลัพธ์
Using data augmentation to eliminate overfitting
คำอธิบาย
-
การเพิ่มข้อมูลสามารถทำได้โดยใช้เลเยอร์จาก tf.keras.layers.experimental.preprocessing
-
เลเยอร์เหล่านี้รวมอยู่ในโมเดลเช่นเดียวกับเลเยอร์อื่นๆ และทำงานบน GPU
-
สิ่งนี้ทำเพื่อขจัดหรือลดการสวมใส่มากเกินไป