Este grupo de redactores ha pasado mucho tiempo investigando para darle respuesta a tus dudas, te dejamos la soluciones por esto esperamos serte de gran ayuda.
Solución:
TL;DR: Una época es cuando su modelo pasa por todos sus datos de entrenamiento una vez. Un paso es cuando su modelo entrena en un solo lote (o una sola muestra si envía muestras una por una). Entrenamiento para 5 épocas en 1000 muestras 10 muestras por lote tomará 500 pasos.
los contrib.learn.io
El módulo no está muy bien documentado, pero parece que numpy_input_fn()
La función toma algunas matrices numpy y las agrupa como entrada para un clasificador. Entonces, la cantidad de épocas probablemente significa “cuántas veces debo revisar los datos de entrada que tengo antes de detenerme”. En este caso, alimentan dos matrices de longitud 4 en lotes de 4 elementos, por lo que solo significará que la función de entrada hará esto como máximo 1000 veces antes de generar una excepción de “sin datos”. El argumento de los pasos en el estimador fit()
La función es cuántas veces el estimador debe hacer el ciclo de entrenamiento. Este ejemplo en particular es algo perverso, así que permítanme inventar otro para aclarar un poco las cosas (con suerte).
Digamos que tiene dos matrices numpy (muestras y etiquetas) en las que desea entrenar. Son 100 elementos cada uno. Quiere que su entrenamiento tome lotes con 10 muestras por lote. Entonces, después de 10 lotes, revisará todos sus datos de entrenamiento. Esa es una época. Si configura su generador de entrada en 10 épocas, pasará por su conjunto de entrenamiento 10 veces antes de detenerse, es decir, generará como máximo 100 lotes.
Nuevamente, el módulo io no está documentado, pero considerando cómo funcionan otras API relacionadas con la entrada en tensorflow, debería ser posible hacer que genere datos para un número ilimitado de épocas, por lo que lo único que controla la duración del entrenamiento serán los pasos. . Esto le brinda una flexibilidad adicional sobre cómo desea que progrese su entrenamiento. Puede pasar varias épocas a la vez o varios pasos a la vez o ambos o lo que sea.
Época: Una pasada a través de todos los datos.
Tamaño del lote: el número de ejemplos vistos en un lote.
Si hay 1000 ejemplos y el tamaño del lote es 100, habrá 10 pasos por época.
Las épocas y el tamaño del lote definen completamente el número de pasos.
pasos_cal = (no de ex / tamaño_de_lote) * no_de_epochs
estimator.fit(input_fn=input_fn)
Si solo escribe el código anterior, entonces el valor de ‘pasos’ es el dado por ‘pasos_cal’ en la fórmula anterior.
estimator.fit(input_fn=input_fn, steps = steps_less)
Si proporciona un valor (por ejemplo, ‘steps_less’) menor que ‘steps_cal’, entonces solo se ejecutará el número de pasos ‘steps_less’. En este caso, el entrenamiento no cubrirá el número total de épocas que se mencionaron.
estimator.fit(input_fn=input_fn, steps = steps_more)
Si das un valor (por ejemplo, pasos_más) mayor que pasos_cal, entonces también se ejecutará el número de pasos ‘pasos_cal’.
Empecemos por el orden inverso:
1) Pasos – número de veces que se ejecutará el ciclo de entrenamiento en su algoritmo de aprendizaje para actualizar los parámetros en el modelo. En cada iteración de bucle, procesará una parte de los datos, que es básicamente un lote. Por lo general, este ciclo se basa en el Descenso de gradiente algoritmo.
2) Tamaño del lote – el tamaño de la porción de datos que alimenta en cada bucle del algoritmo de aprendizaje. Puedes alimentar al entero conjunto de datos, en cuyo caso el tamaño del lote es igual al tamaño del conjunto de datos. También puede alimentar una ejemplo a la vez. O puedes alimentar algún número norte de ejemplos
3) Época – la cantidad de veces que ejecuta el conjunto de datos extrayendo lotes para alimentar el algoritmo de aprendizaje.
Digamos que tienes 1000 ejemplos. Establecer el tamaño del lote = 100, la época = 1 y los pasos = 200 da un proceso con un paso (una época) sobre todo el conjunto de datos. En cada pasada, alimentará al algoritmo con un lote de 100 ejemplos. El algoritmo ejecutará 200 pasos en cada lote. En total, se ven 10 lotes. Si cambia la época a 25, lo hará 25 veces y verá 25×10 lotes en total.
¿Porqué necesitamos esto? Hay muchas variaciones en el descenso de gradiente (por lotes, estocástico, mini-lote), así como otros algoritmos para optimizar los parámetros de aprendizaje (por ejemplo, L-BFGS). Algunos de ellos necesitan ver los datos en lotes, mientras que otros ven un dato a la vez. Además, algunos de ellos incluyen factores/pasos aleatorios, por lo que es posible que necesite varias pasadas en los datos para obtener una buena convergencia.
Agradecemos que desees añadir valor a nuestro contenido aportando tu experiencia en las críticas.