Controla cómo se limpian los recursos de TensorFlow cuando ya no se necesitan.
Todos los recursos asignados durante una EagerSession
se eliminan cuando se cierra la sesión. Para evitar errores de memoria insuficiente, también se recomienda encarecidamente limpiar esos recursos durante la sesión. Por ejemplo, la ejecución de n operaciones en un bucle de m iteraciones asignará un mínimo de n * m recursos, mientras que en la mayoría de los casos, solo se siguen utilizando los recursos de la última iteración.
EagerSession
instancias de EagerSession
se pueden notificar de diferentes maneras cuando los objetos de TensorFlow ya no se hacen referencia, para que puedan proceder a la limpieza de los recursos que posean.
Métodos heredados
Valores de enumeración
public static final EagerSession.ResourceCleanupStrategy IN_BACKGROUND
Supervise y elimine los recursos no utilizados de un nuevo hilo que se ejecuta en segundo plano.
Este es el enfoque más confiable para limpiar los recursos de TensorFlow, a costa de iniciar y ejecutar un hilo adicional dedicado a esta tarea. Cada instancia de EagerSession
tiene su propio hilo, que se detiene solo cuando se cierra la sesión.
Esta estrategia se utiliza de forma predeterminada.
public static final EagerSession.ResourceCleanupStrategy ON_SAFE_POINTS
Supervise y elimine los recursos no utilizados de los hilos existentes, antes o después de que completen otra tarea.
Los recursos no utilizados se liberan cuando una llamada a la biblioteca de TensorFlow llega a un punto seguro para la limpieza. Esto se hace de forma sincrónica y puede bloquear durante un corto período de tiempo el hilo que desencadenó esa llamada.
Esta estrategia debe usarse solo si, por alguna razón, no se debe asignar ningún subproceso adicional para la limpieza. De lo contrario, debería preferirse IN_BACKGROUND
.
public static final EagerSession.ResourceCleanupStrategy ON_SESSION_CLOSE
Solo elimine recursos cuando la sesión esté cerrada.
Todos los recursos asignados durante la sesión permanecerán en la memoria hasta que la sesión se cierre explícitamente (o mediante la técnica tradicional `try-with-resource`). No se intentará ninguna tarea adicional para la limpieza de recursos.
Esta estrategia puede dar lugar a errores de memoria insuficiente y no se recomienda su uso, a menos que el alcance de la sesión se limite a ejecutar solo una pequeña cantidad de operaciones.