tutorial example espaƱol dense machine-learning neural-network theano conv-neural-network keras

machine-learning - example - tensorflow tutorial



Llamando "encajar" varias veces en Keras (2)

Esta pregunta se planteó en el repositorio de Github de Keras en el número 4446: Pregunta rápida: ¿puede un modelo ajustarse varias veces? Fue cerrado por François Chollet con la siguiente statement :

Sí, las llamadas sucesivas para fit entrenarán gradualmente el modelo.

Así que, sí, puedes llamar al ajuste varias veces.

He estado trabajando en una CNN a lo largo de varios cientos de GB de imágenes. He creado una función de entrenamiento que elimina partes de 4 Gb de estas imágenes y las llamadas fit en cada una de estas piezas. Me preocupa que solo estoy entrenando en la última pieza en no en todo el conjunto de datos.

Efectivamente, mi pseudo-código se ve así:

DS = lazy_load_400GB_Dataset() for section in DS: X_train = section.images Y_train = section.classes model.fit(X_train, Y_train, batch_size=16, nb_epoch=30)

Sé que la API y los foros de Keras dicen que esto formará sobre todo el conjunto de datos, pero no puedo entender intuitivamente por qué la red no volvería a aprender solo en la última parte de la capacitación.

Un poco de ayuda para entender esto sería muy apreciado.

Mejor, joe


Para los conjuntos de datos que no caben en la memoria, hay una respuesta en la sección de Preguntas frecuentes de la documentación de Keras

Puede hacer entrenamiento por lotes usando model.train_on_batch(X, y) y model.test_on_batch(X, y) . Consulte la documentación de los modelos .

Alternativamente, puede escribir un generador que genere lotes de datos de entrenamiento y usar el método model.fit_generator(data_generator, samples_per_epoch, nb_epoch) .

Puedes ver el entrenamiento por lotes en acción en nuestro ejemplo de CIFAR10 .

Entonces, si desea iterar su conjunto de datos de la forma en que lo está haciendo, probablemente debería usar model.train_on_batch y cuidar de los tamaños de lote y la iteración.

Una cosa más a tener en cuenta es que debe asegurarse de que el orden en el que se mezclan las muestras con las que entrena a su modelo se baraja después de cada época. La forma en que ha escrito el código de ejemplo parece no mezclar el conjunto de datos. Puedes leer un poco más sobre barajar here y here