วิธีตั้งค่า batch_size, steps_per epoch และขั้นตอนการตรวจสอบความถูกต้อง


26

ฉันเริ่มเรียนรู้ CNN โดยใช้ Keras ฉันใช้แบ็กเอนด์ theano

ฉันไม่เข้าใจวิธีการตั้งค่าเป็น:

  • batch_size,
  • ขั้นตอนต่อยุค
  • validation_steps

สิ่งที่ควรเป็นค่ากำหนดเป็นbatch_sizeขั้นตอนต่อยุคและขั้นตอนการตรวจสอบถ้าฉันมี 240,000 ตัวอย่างในชุดฝึกอบรมและ 80,000 ในชุดทดสอบ?


ข้อกำหนดฮาร์ดแวร์ของคุณคืออะไร ขึ้นอยู่กับว่าโดยทั่วไปแล้วคนใช้ขนาดแบทช์ที่ 32/64, ยุคเป็น 10 ~ 15 แล้วคุณสามารถคำนวณขั้นตอนต่อยุคจากด้านบน ..
Aditya

คำตอบ:


28
  • batch_sizeกำหนดจำนวนของตัวอย่างในแต่ละชุดเล็ก ค่าสูงสุดคือจำนวนตัวอย่างทั้งหมดซึ่งทำให้การไล่ระดับสีถูกต้องแม่นยำการสูญเสียจะลดลงไปต่ำสุดหากอัตราการเรียนรู้มีขนาดเล็กพอ แต่การทำซ้ำจะช้ากว่า ค่าต่ำสุดคือ 1 ส่งผลให้เกิดการไล่ระดับสีแบบสุ่ม: เร็ว แต่ทิศทางของการไล่ระดับสีจะขึ้นอยู่กับเพียงตัวอย่างเดียวการสูญเสียอาจกระโดดไปมา batch_size ช่วยให้สามารถปรับระหว่างสองสุดขั้ว: ทิศทางการไล่ระดับสีที่แม่นยำและการวนซ้ำอย่างรวดเร็ว นอกจากนี้ค่าสูงสุดสำหรับ batch_size อาจถูก จำกัด หากรุ่น + ชุดข้อมูลของคุณไม่พอดีกับหน่วยความจำ (GPU) ที่มีอยู่
  • steps_per_epochจำนวนการทำซ้ำแบทช์ก่อนที่ยุคการฝึกอบรมจะถือว่าเสร็จสิ้น หากคุณมีชุดฝึกอบรมที่มีขนาดคงที่คุณสามารถเพิกเฉยได้ แต่มันอาจมีประโยชน์หากคุณมีชุดข้อมูลขนาดใหญ่หรือถ้าคุณสร้างการสุ่มข้อมูลเพิ่มเติมได้ทันทีเช่นชุดฝึกอบรมของคุณมีขนาดไม่ จำกัด หากคุณมีเวลาผ่านชุดข้อมูลการฝึกอบรมทั้งหมดของคุณฉันแนะนำให้ข้ามพารามิเตอร์นี้
  • validation_stepsคล้ายกับ steps_per_epoch แต่ในชุดข้อมูลการตรวจสอบความถูกต้องแทนข้อมูลการฝึกอบรม หากคุณมีเวลาผ่านชุดข้อมูลการตรวจสอบความถูกต้องทั้งหมดของคุณฉันแนะนำให้ข้ามพารามิเตอร์นี้

คุณหมายความว่าอย่างไรโดย "ข้ามพารามิเตอร์นี้" When using data tensors as input to a model, you should specify the steps_per_epoch argumentเมื่อฉันลบพารามิเตอร์ที่ฉันได้รับ
Nicolas Raoul

ตามเอกสารคู่มือพารามิเตอร์ steps_per_epoch ของวิธีการแบบพอดีมีค่าเริ่มต้นและควรเป็นทางเลือก: "ค่าเริ่มต้น None เท่ากับจำนวนตัวอย่างในชุดข้อมูลของคุณหารด้วยขนาดแบตช์หรือ 1 หากไม่สามารถกำหนดได้" ที่มา: keras.io/models/model
Silpion

1

มีคำตอบในGithub

  1. model.fit_generator ต้องใช้ตัวสร้างชุดข้อมูลอินพุตเพื่อให้ทำงานได้อย่างไม่สิ้นสุด
  2. steps_per_epochจะใช้ในการสร้างชุดข้อมูลทั้งหมดครั้งเดียวโดยการเรียกsteps_per_epochครั้งกำเนิด
  3. ในขณะที่epochsให้จำนวนครั้งที่โมเดลถูกฝึกผ่านชุดข้อมูลทั้งหมด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.