Cómo configurar batch_size, steps_per epoch y pasos de validación

26

Estoy empezando a aprender CNN usando Keras. Estoy usando el backend theano.

No entiendo cómo establecer valores para:

  • tamaño del lote,
  • pasos por época,
  • validation_steps.

¿Cuál debería ser el valor establecido batch_size, los pasos por época y los pasos de validación si tengo 240,000 muestras en el conjunto de entrenamiento y 80,000 en el conjunto de prueba?

Ermene
fuente
¿Cuáles son sus especificaciones de hardware? Depende de eso En general, las personas usan un tamaño de lote de 32/64, épocas como 10 ~ 15 y luego puede calcular los pasos por época a partir de lo anterior.
Aditya

Respuestas:

28
  • batch_size determina el número de muestras en cada mini lote. Su máximo es el número de todas las muestras, lo que hace que el descenso del gradiente sea preciso, la pérdida disminuirá hacia el mínimo si la tasa de aprendizaje es lo suficientemente pequeña, pero las iteraciones son más lentas. Su mínimo es 1, lo que resulta en un descenso de gradiente estocástico: rápido, pero la dirección del paso de gradiente se basa solo en un ejemplo, la pérdida puede saltar. batch_size permite ajustar entre los dos extremos: dirección de gradiente precisa e iteración rápida. Además, el valor máximo para batch_size puede estar limitado si su modelo + conjunto de datos no cabe en la memoria disponible (GPU).
  • steps_per_epoch el número de iteraciones por lotes antes de que una época de entrenamiento se considere terminada. Si tiene un conjunto de entrenamiento de tamaño fijo, puede ignorarlo, pero puede ser útil si tiene un gran conjunto de datos o si está generando aumentos aleatorios de datos sobre la marcha, es decir, si su conjunto de entrenamiento tiene un tamaño infinito (generado). Si tiene tiempo para revisar todo su conjunto de datos de entrenamiento, le recomiendo omitir este parámetro.
  • validation_steps similar a steps_per_epoch pero en el conjunto de datos de validación en lugar de los datos de entrenamiento. Si tiene tiempo para revisar todo el conjunto de datos de validación, le recomiendo omitir este parámetro.
Silpion
fuente
¿Qué quiere decir con "omitir este parámetro"? Cuando elimino el parámetro que obtengo When using data tensors as input to a model, you should specify the steps_per_epoch argument.
Nicolas Raoul
Según la documentación, el parámetro steps_per_epoch del método fit tiene un valor predeterminado y, por lo tanto, debería ser opcional: "el valor predeterminado None es igual al número de muestras en su conjunto de datos dividido por el tamaño del lote, o 1 si eso no se puede determinar". Fuente: keras.io/models/model
Silpion
1

hay una respuesta en Github

  1. model.fit_generator requiere que el generador de dataset de entrada se ejecute infinitamente.
  2. steps_per_epochse usa para generar todo el conjunto de datos una vez llamando a los steps_per_epochtiempos del generador
  3. mientras que epochsda la cantidad de veces que el modelo se entrena en todo el conjunto de datos.
Hong Cheng
fuente