Cara mengatur batch_size, step_per epoch, dan langkah validasi

26

Saya mulai belajar CNN menggunakan Keras. Saya menggunakan theano backend.

Saya tidak mengerti cara mengatur nilai ke:

  • batch_size,
  • langkah per zaman,
  • validation_steps.

Apa yang seharusnya menjadi nilai yang ditetapkan batch_size, langkah per zaman, dan langkah validasi jika saya memiliki 240.000 sampel dalam pelatihan dan 80.000 dalam set tes?

Ermene
sumber
Apa spesifikasi perangkat keras Anda? Tergantung pada umumnya orang menggunakan ukuran batch 32/64, zaman sebagai 10 ~ 15 dan kemudian Anda dapat menghitung langkah per zaman dari atas ..
Aditya

Jawaban:

28
  • batch_size menentukan jumlah sampel dalam setiap batch mini. Maksimumnya adalah jumlah semua sampel, yang membuat gradient descent akurat, kehilangan akan berkurang menuju minimum jika tingkat pembelajaran cukup kecil, tetapi iterasi lebih lambat. Minimumnya adalah 1, menghasilkan penurunan gradien stokastik: Cepat tetapi arah langkah gradien hanya didasarkan pada satu contoh, kerugian mungkin melompat-lompat. batch_size memungkinkan untuk menyesuaikan antara dua ekstrem: arah gradien yang akurat dan iterasi cepat. Juga, nilai maksimum untuk batch_size mungkin terbatas jika model + set data Anda tidak sesuai dengan memori (GPU) yang tersedia.
  • steps_per_epoch jumlah iterasi batch sebelum periode pelatihan dianggap selesai. Jika Anda memiliki set pelatihan ukuran tetap, Anda dapat mengabaikannya tetapi mungkin berguna jika Anda memiliki set data besar atau jika Anda menghasilkan penambahan data acak dengan cepat, yaitu jika set pelatihan Anda memiliki ukuran tak terbatas (dihasilkan). Jika Anda memiliki waktu untuk memeriksa seluruh rangkaian data pelatihan, saya sarankan untuk melewati parameter ini.
  • validation_steps mirip dengan steps_per_epoch tetapi pada data validasi ditetapkan sebagai ganti pada data pelatihan. Jika Anda punya waktu untuk memeriksa seluruh set data validasi, saya sarankan untuk melewati parameter ini.
Silpion
sumber
Apa yang Anda maksud dengan "melewatkan parameter ini"? Ketika saya menghapus parameter yang saya dapatkan When using data tensors as input to a model, you should specify the steps_per_epoch argument.
Nicolas Raoul
Menurut dokumentasi, parameter steps_per_epoch dari kecocokan metode memiliki default dan karenanya harus opsional: "Tidak ada default yang sama dengan jumlah sampel dalam dataset Anda dibagi dengan ukuran batch, atau 1 jika itu tidak dapat ditentukan." Sumber: keras.io/models/model
Silpion
1

ada jawaban di Github

  1. model.fit_generator membutuhkan generator dataset input untuk berjalan tanpa batas.
  2. steps_per_epochdigunakan untuk menghasilkan seluruh dataset sekali dengan memanggil generator steps_per_epochkali
  3. sedangkan epochsberi berapa kali model dilatih atas seluruh dataset.
Hong Cheng
sumber