started - ¿Qué es un lote en TensorFlow?
tensorflow text classification (1)
La documentación introductoria, que estoy leyendo ( TOC aquí ) introduce el término aquí sin haberlo definido.
[1] https://www.tensorflow.org/get_started/
[2] https://www.tensorflow.org/tutorials/mnist/tf/
Supongamos que desea realizar el reconocimiento de dígitos (MNIST) y que ha definido su arquitectura de red (CNN). Ahora, puede comenzar a alimentar las imágenes de los datos de entrenamiento una a una a la red, obtener la predicción (hasta que este paso se denomina inferencia ), calcular la pérdida, calcular el gradiente y luego actualizar los parámetros de su red ( es decir, pesos y sesgos ) y luego continúe con la siguiente imagen ... Esta forma de entrenamiento del modelo a veces se denomina aprendizaje en línea .
Sin embargo, desea que la capacitación sea más rápida, que los gradientes sean menos ruidosos y que también aprovechen la potencia de las GPU que son eficientes para realizar operaciones de matriz ( las matrices nD son específicas). Entonces, lo que hace es alimentar, por ejemplo, 100 imágenes a la vez (la elección de este tamaño depende de usted (es decir, es un hiperparámetro ) y también depende de su problema). Por ejemplo, eche un vistazo a la imagen de abajo, (Autor: Martin Gorner)
Aquí, ya que está alimentando 100 imágenes ( 28x28
) a la vez (en lugar de 1 como en el caso de capacitación en línea), el tamaño del lote es de 100 . A menudo, esto se denomina tamaño de mini lote o simplemente mini-batch
.
También la foto de abajo: (Autor: Martin Gorner)
Ahora, la multiplicación de matrices funcionará perfectamente bien y también aprovechará las operaciones de matriz altamente optimizadas y, por lo tanto, logrará un tiempo de entrenamiento más rápido.
Si observa la imagen de arriba, no importa mucho si da imágenes de 100 o 256 o 2048 o 10000 ( tamaño de lote ) siempre que quepa en la memoria de su hardware (GPU). Simplemente obtendrás tantas predicciones.
Pero, tenga en cuenta que este tamaño de lote influye en el tiempo de entrenamiento, el error que logra, los gradientes, etc. No existe una regla general sobre qué tamaño de lote funciona mejor. Solo intente algunos tamaños y elija el que mejor funcione para usted. Pero trate de no usar lotes grandes ya que se ajustará a los datos. La gente comúnmente usa tamaños de mini lotes de 32, 64, 128, 256, 512, 1024, 2048
.
Bonificación : para comprender bien lo loco que puede volverse con este tamaño de lote, lea este documento: extraño truco para paralelizar CNNs