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:
- https://github.com/fchollet/keras/issues/2102
- https://groups.google.com/forum/#!topic/keras-users/MFUEY9P1sc8
đã 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 –
Không. Di chuyển ra khỏi Keras. Chỉ sử dụng tensorflow với đồ thị và phiên. – Chintak
Bạn đã thử K.clear_session() – 0xF