¿Para qué necesito K.clear_session () y del modelo para (Keras con Tensorflow-gpu)?

Qué estoy haciendo
Estoy entrenando y usando una red de neuronas convolucionales (CNN) para la clasificación de imágenes usando Keras con Tensorflow-gpu como backend.

Que estoy usando
– Comunidad PyCharm 2018.1.2
Python 2.7 y 3.5 (pero no ambos a la vez)
– Ubuntu 16.04
– Keras 2.2.0
– Tensorflow-GPU 1.8.0 como backend

Qué quiero saber
En muchos códigos veo gente usando

from keras import backend as K # Do some code, eg train and save model K.clear_session() 

o eliminando el modelo después de usarlo:

 del model 

La documentación de keras dice acerca de clear_session : “Destruye el gráfico TF actual y crea uno nuevo. Útil para evitar el desorden de los viejos modelos / capas”. – https://keras.io/backend/

¿Cuál es el punto de hacer eso y debería hacerlo también? Al cargar o crear un nuevo modelo, mi modelo se sobrescribe de todos modos, ¿por qué molestarse?

K.clear_session () es útil cuando crea varios modelos en sucesión, como durante la búsqueda con hiperparámetro o la validación cruzada. Cada modelo que entrena agrega nodos (potencialmente numeración en los miles) al gráfico. TensorFlow ejecuta el gráfico completo siempre que usted (o Keras) llame a tf.Session.run () o tf.Tensor.eval (), por lo que sus modelos se volverán más y más lentos para entrenar, y es posible que se quede sin memoria. Al borrar la sesión, se eliminan todos los nodos que quedaron de los modelos anteriores, liberando memoria y evitando la desaceleración.

Del eliminará la variable en Python y dado que el modelo es una variable, el modelo la eliminará, pero el gráfico TF no tendrá cambios (TF es su backend de Keras). Dicho esto, K.clear_session () destruirá el gráfico TF actual y creará uno nuevo. Crear un nuevo modelo parece ser un paso independiente, pero no olvide el backend 🙂