2016-04-11 37 views
7

Tôi đã tạo một lớp trình bao bọc khởi tạo một mô hình keras.models.Sequential và có một vài phương pháp để bắt đầu quá trình đào tạo và theo dõi tiến trình. Tôi khởi tạo lớp này trong tệp main của mình và thực hiện quy trình đào tạo. Khá công bằng.Làm thế nào để kiểm soát bộ nhớ trong khi sử dụng Keras với backend tensorflow?

My câu hỏi là:

Làm thế nào để giải phóng tất cả các bộ nhớ GPU giao tensorflow. Tôi đã thử các sau đây không có may mắn:

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) 

Ngay cả sau khi phiên giao dịch đã bị đóng cửa và đặt lại để None, nvidia-smi không phản ánh bất kỳ giảm sử dụng bộ nhớ. Ý tưởng nào?

Idea

Nó sẽ có ý nghĩa để thêm một phương pháp __exit__ đến lớp NeuralNet của tôi và nhanh chóng nó như:

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

Làm thế nào tôi nên giải phóng các nguồn lực của mô hình keras trong phương pháp này ?

Kiểm tra môi trường

Tôi đang sử dụng ipython Máy tính xách tay trên một Ubuntu 14.04 với 3 GTX 960 GPU.

tham khảo:

  1. https://github.com/fchollet/keras/issues/2102
  2. https://groups.google.com/forum/#!topic/keras-users/MFUEY9P1sc8
+1

đã tự hỏi nếu bạn tìm thấy giải pháp cho điều này! i cant dường như tìm một cách để có tensorflow (thông qua keras) phát hành bộ nhớ mà không cần thoát khỏi quá trình python –

+0

Không. Di chuyển ra khỏi Keras. Chỉ sử dụng tensorflow với đồ thị và phiên. – Chintak

+0

Bạn đã thử K.clear_session() – 0xF

Trả lời

1

Các công trình sau đây cho tôi để reinitialize tình trạng lớp Keras trong máy tính xách tay Jupyter của tôi cho mỗi chạy:

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

Ngoài ra, biểu đồ được đặt tên và đặt lại mỗi lần máy tính xách tay chạy bằng:

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

Lưu ý: Tôi vẫn đang cố gắng để quấn quanh đầu tôi các khái niệm về Keras và tensorflow (Tôi tin rằng họ được mô tả kém trong tài liệu hướng dẫn và các ví dụ) nhưng các công trình trên.

+0

Việc xóa một phiên có giữ tất cả các mô hình hiện có và trọng số của chúng không? –

+0

Trọng lượng bị xóa, biểu đồ được lưu giữ, xin lỗi vì trả lời muộn. Bằng cách nào đó tôi không nhận được thông báo ... – xor007

Các vấn đề liên quan