web-dev-qa-db-fra.com

Pourquoi ai-je besoin de K.clear_session () et du modèle (Keras avec Tensorflow-gpu)?

Que suis-je en train de faire
Je suis en train d’entraîner et d’utiliser un réseau de neurones convolutifs (CNN) pour la classification d’images en utilisant Keras avec Tensorflow-gpu comme serveur principal.

Ce que j'utilise
- PyCharm Community 2018.1.2
- à la fois Python 2.7 et 3.5 (mais pas les deux à la fois)
- Ubuntu 16.04
- Keras 2.2.0
- Tensorflow-GPU 1.8.0 en tant que backend

Ce que je veux savoir
Dans de nombreux codes, je vois des gens utiliser

from keras import backend as K 

# Do some code, e.g. train and save model

K.clear_session()

ou supprimer le modèle après l'avoir utilisé:

del model

La documentation de keras indique à propos de clear_session: "Détruit le graphique TF actuel et en crée un nouveau. Utile pour éviter l'encombrement des anciens modèles/couches." - https://keras.io/backend/

Quel est l'intérêt de faire cela et devrais-je le faire aussi? Lors du chargement ou de la création d'un nouveau modèle, mon modèle est écrasé de toute façon, alors pourquoi s'en préoccuper?

7
benjamin

K.clear_session () est utile lorsque vous créez plusieurs modèles à la suite, par exemple lors d'une recherche d'hyperparamètre ou d'une validation croisée. Chaque modèle que vous formez ajoute des nœuds (potentiellement numérotés par milliers) au graphique. TensorFlow exécute le graphique entier à chaque fois que vous appelez tf.Session.run () ou tf.Tensor.eval (), de sorte que vos modèles deviennent de plus en plus lents et que vous risquez également de manquer de mémoire. Effacer la session supprime tous les nœuds restants des modèles précédents, libérant de la mémoire et empêchant le ralentissement.

1
Chris Swinchatt