Como controlar memória enquanto estiver usando Keras com tensorflow back-end?

votos
7

Eu criei uma classe wrapper que inicializa um keras.models.Sequentialmodelo e tem um par de métodos para iniciar o processo de formação e acompanhamento do progresso. I instanciar esta classe no meu mainarquivo e executar o processo de formação. Coisas bastante mundano.

Minha pergunta é:

Como para libertar toda a memória GPU atribuído pelo tensorflow. Eu tentei o seguinte sem sorte:

import keras.backend.tensorflow_backend as K
with K.get_session() as sess:
    K.set_session(sess)
    import tensorflow as tf
    from neural_net import NeuralNet
    with tf.device('/gpu:0'):
        nn = NeuralNet('config', train_db_path, test_db_path)
        nn.train(1000, 1)
        print 'Done'
    K._SESSION.close()
    K.set_session(None)

Mesmo após a sessão foi fechada e redefinir a None, nvidia-sminão reflete qualquer redução no uso de memória. Alguma ideia?

Idéia

Seria significativo para adicionar um __exit__método para a minha NeuralNetclasse e instancia-lo como:

with NeuralNet() as nn:
    nn.train(1000, 1)

Como devo liberar os recursos do modelo keras neste método?

Ambiente de teste

Estou usando ipython Notebook em um Ubuntu 14.04 com 3 GTX 960 GPUs.

Referência:

  1. https://github.com/fchollet/keras/issues/2102
  2. https://groups.google.com/forum/#!topic/keras-users/MFUEY9P1sc8
Publicado 11/04/2016 em 10:51
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Os seguintes trabalhos para me para reinicializar o estado de camadas Keras no meu caderno Jupyter para cada corrida:

from keras import backend as K
K.clear_session()
sess = tf.Session()
K.set_session(sess)

Além disso, o gráfico é nomeado e redefinir cada vez que o notebook funciona usando:

graphr = K.get_session().graph
with graphr.as_default():
    #...graph building statements...

Nota: Eu ainda estou tentando envolver minha cabeça em torno dos conceitos de Keras e tensorflow (eu acredito que eles são descritos mal na documentação e exemplos), mas as obras acima.

Respondeu 29/03/2017 em 02:28
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more