python – Keras Early Stopping

Estoy entrenando red neuronal para mi proyecto usando Keras. Keras ha proporcionado una función para la parada temprana. ¿Puedo saber qué parámetros deben observarse para evitar que mi red neuronal se sobrecaliente utilizando una parada temprana?
Mejor respuesta
early stopping

La detención temprana es básicamente detener el entrenamiento una vez que su pérdida comienza a aumentar (o, en otras palabras, la precisión de la validación comienza a disminuir). Según documents se utiliza de la siguiente manera;

keras.callbacks.EarlyStopping(monitor='val_loss',
                              min_delta=0,
                              patience=0,
                              verbose=0, mode='auto')

Los valores dependen de su implementación (problema, tamaño de lote, etc.) pero, en general, para evitar el ajuste excesivo que usaría;

> Monitorear la pérdida de validación (necesidad de usar cross
validación o, al menos, conjuntos de trenes / pruebas) configurando el monitor
argumento a ‘val_loss’.
> min_delta es un umbral para cuantificar una pérdida en alguna época como
Mejora o no. Si la diferencia de pérdida es inferior a min_delta, se cuantifica.
Como no hay mejora. Mejor dejarlo como 0 ya que estamos interesados ​​en
cuando la pérdida empeora
> el argumento de paciencia representa el número de épocas antes de detenerse una vez que su pérdida comienza a aumentar (deja de mejorar).
Esto depende de su implementación, si usa lotes muy pequeños
o una gran tasa de aprendizaje de su pérdida en zig-zag (la precisión será más ruidosa) por lo que es mejor establecer un
Gran argumento de paciencia. Si utiliza lotes grandes y un pequeño
la tasa de aprendizaje de su pérdida será más suave para que pueda usar una
Argumento de paciencia menor. De cualquier manera lo dejaré como 2 así que lo haría
Dale al modelo más oportunidad.
> verbose decide qué imprimir, déjelo por defecto (0).
> El argumento del modo depende de la dirección en la que se monitorea la cantidad.
tiene (se supone que está disminuyendo o aumentando), ya que monitoreamos la pérdida, podemos usar mín. Pero dejemos keras
manejar eso por nosotros y configurarlo para auto

Por lo tanto, usaría algo como esto y experimentaría trazando la pérdida de error con y sin detenerlo anticipadamente.

keras.callbacks.EarlyStopping(monitor='val_loss',
                              min_delta=0,
                              patience=2,
                              verbose=0, mode='auto')

Para una posible ambigüedad sobre cómo funcionan las devoluciones de llamada, intentaré explicar más. Una vez que llame a fit (… callbacks = [es]) en su modelo, Keras llama a determinados objetos de devolución de llamada funciones predeterminadas. Estas funciones pueden llamarse on_train_begin, on_train_end, on_epoch_begin, on_epoch_end y on_batch_begin, on_batch_end. La devolución de llamada de detención temprana se realiza en cada final de época, compara el mejor valor supervisado con el valor actual y se detiene si se cumplen las condiciones (cuántas épocas han pasado desde la observación del mejor valor supervisado y es más que un argumento de paciencia, la diferencia entre El último valor es más grande que min_delta, etc.

Como lo señaló @BrentFaust en los comentarios, el entrenamiento del modelo continuará hasta que se cumplan las condiciones de Early Stopping o se cumpla el parámetro de época (predeterminado = 10) en fit (). Establecer una devolución de llamada de detención temprana no hará que el modelo se entrene más allá de su parámetro de época. Así que llamar a la función fit () con un valor de épocas más grande se beneficiaría más de la devolución de llamada de detención temprana.

Por favor indique la dirección original:python – Keras Early Stopping - Código de registro