พารามิเตอร์ validation_split ของฟังก์ชัน fit ของ Keras ทำงานอย่างไร


17

การตรวจสอบแยกใน Keras ลำดับฟังก์ชั่นรุ่นพอดีเป็นเอกสารดังต่อไปนี้ในhttps://keras.io/models/sequential/ :

validation_split: ลอยระหว่าง 0 และ 1 เศษส่วนของข้อมูลการฝึกอบรมที่จะใช้เป็นข้อมูลการตรวจสอบ แบบจำลองจะแยกส่วนของข้อมูลการฝึกอบรมนี้จะไม่ฝึกอบรมและจะประเมินการสูญเสียและตัวชี้วัดแบบจำลองใด ๆ กับข้อมูลนี้ในตอนท้ายของแต่ละยุค ข้อมูลการตรวจสอบความถูกต้องถูกเลือกจากตัวอย่างสุดท้ายในข้อมูล x และ y ที่ให้ไว้ก่อนที่จะสับ

โปรดสังเกตบรรทัดสุดท้าย:

ข้อมูลการตรวจสอบความถูกต้องถูกเลือกจากตัวอย่างสุดท้ายในข้อมูล x และ y ที่ให้ไว้ก่อนที่จะสับ

หมายความว่าข้อมูลการตรวจสอบความถูกต้องคงที่และนำมาจากด้านล่างของชุดข้อมูลหลักหรือไม่?

มีวิธีใดบ้างที่จะสามารถทำการสุ่มเลือกสัดส่วนของข้อมูลจากชุดข้อมูลหลักได้?

คำตอบ:


17

จริงๆแล้วคุณไม่ต้องการที่จะสุ่มตัวอย่างการตรวจสอบของคุณอีกครั้งหลังจากแต่ละยุค หากคุณทำสิ่งนี้แบบจำลองของคุณจะได้รับการฝึกฝนในทุก ๆ ตัวอย่างในชุดข้อมูลของคุณซึ่งจะทำให้เกิดการ overfitting คุณต้องการแบ่งข้อมูลของคุณเสมอก่อนกระบวนการฝึกอบรมและจากนั้นอัลกอริทึมควรได้รับการฝึกฝนโดยใช้ชุดย่อยของข้อมูลสำหรับการฝึกอบรม

ฟังก์ชั่นตามที่ได้รับการออกแบบให้แน่ใจว่าข้อมูลจะถูกแยกออกในลักษณะที่มันมักจะฝึกอบรมในส่วนของข้อมูลเดียวกันสำหรับแต่ละยุค การสับทั้งหมดทำในตัวอย่างการฝึกอบรมระหว่างกาลหากเลือกตัวเลือกนั้น

อย่างไรก็ตามสำหรับชุดข้อมูลบางชุดที่ได้รับอินสแตนซ์สุดท้ายไม่เป็นประโยชน์โดยเฉพาะถ้าชุดข้อมูลนั้นจัดกลุ่มใหม่ตามคลาส จากนั้นการกระจายชั้นเรียนของคุณจะเบ้ ดังนั้นคุณจะต้องมีวิธีการสุ่มบางอย่างในการแยกชุดย่อยของข้อมูลเพื่อรับการกระจายคลาสที่สมดุลในชุดการฝึกอบรมและการตรวจสอบความถูกต้อง สำหรับสิ่งนี้ฉันชอบใช้ฟังก์ชั่น sklearn ดังนี้

from sklearn.model_selection import train_test_split

# Split the data
x_train, x_valid, y_train, y_valid = train_test_split(data, labels, test_size=0.33, shuffle= True)

มันเป็นฟังก์ชั่นที่ใช้งานง่ายที่ทำในสิ่งที่คุณต้องการ ตัวแปรdataและlabelsเป็นเมทริกซ์ numpy มาตรฐานโดยมีมิติแรกเป็นอินสแตนซ์


1
ฉันไม่ได้หมายถึงการตั้งค่าการทดสอบที่แตกต่างกันหลังจากแต่ละยุค ฉันถูกถามเกี่ยวกับการรับข้อมูลจากจุดสิ้นสุดของชุดข้อมูลเนื่องจากชุดข้อมูลจำนวนมากอาจถูกจัดเรียงตามคลาส (ตามที่คุณกล่าวถึง) ฉันรู้train_test_splitแล้วและตอนนี้คุณยืนยันว่านี่เป็นวิธีที่ดีกว่าเนื่องจากมันจะสุ่มรับข้อมูลทดสอบ / ตรวจสอบจากชุดข้อมูล
rnso

@rnso ขออภัย Keras ไม่มีตัวเลือกนั้น ฉันเดาว่ามันไม่ได้อยู่ในขอบเขตของสิ่งที่พวกเขาต้องการนำเสนอ จะทำให้การใช้งานมีความสับสนเล็กน้อยซึ่งมีวิธีการอินพุตที่แตกต่างกัน 2 รายการโดยการสุ่มในชื่อ
JahKnows

คุณไม่ได้ผสมคำจำกัดความของการตรวจสอบความถูกต้องและข้อมูลการทดสอบโดยใช้ train_test_spli
bagustris

หากคุณใช้shuffleพารามิเตอร์คุณจะใช้shuffleใน.fitโมเดล keras ด้วยหรือไม่
Shamoon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.