2017-07-11 25 views
5

Tôi đang chạy keras đào tạo mạng lưới thần kinh và dự đoán về GTX 1070 trên Windows 10. Hầu hết các lần nó đang làm việc, nhưng theo thời gian nó than phiềnCUDNN_STATUS_NOT_INITIALIZED không thể đoán trước trên Windows

E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:359] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED 
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:366] error retrieving driver version: Unimplemented: kernel reported driver version not implemented on Windows 
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:326] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM 
F c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\kernels\conv_ops.cc:659] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms) 

Nó không thể được giải thích không phải bằng cách theo nghĩa đen lỗi có nghĩa là cũng không phải do lỗi OOM.

Cách khắc phục?

+0

https://github.com/tensorflow/tensorflow/issues/6698 –

Trả lời

2

Hãy thử giới hạn mức sử dụng GPU của bạn bằng tùy chọn gpu được thiết lập per_process_gpu_memory_fraction.

Fiddle xung quanh với nó để xem những gì hoạt động và những gì không.

Tôi khuyên bạn nên sử dụng .7 làm đường cơ sở ban đầu.

+0

@Dims Bạn có phiền chọn của tôi trả lời để điều này có thể được đóng lại? –

1

Tôi gặp sự cố đôi khi trên Windows10 và Keras. Khởi động lại giải quyết vấn đề trong một thời gian ngắn, nhưng lại xảy ra.

tôi tham khảo https://github.com/fchollet/keras/issues/1538

import tensorflow as tf 
from keras.backend.tensorflow_backend import set_session 
config = tf.ConfigProto() 
config.gpu_options.per_process_gpu_memory_fraction = 0.3 
set_session(tf.Session(config=config)) 

các thiết lập giải quyết vấn đề dừng lại.

0

các tf doku giúp đỡ tôi rất nhiều Allowing GPU memory growth

Đầu tiên là tùy chọn allow_growth, mà cố gắng để cấp phát bộ nhớ GPU chỉ càng nhiều dựa trên phân bổ thời gian chạy: nó bắt đầu ra phân bổ rất ít bộ nhớ, và như Sốhiên được chạy và cần nhiều bộ nhớ GPU hơn, chúng tôi mở rộng vùng bộ nhớ GPU cần thiết bởi quá trình TensorFlow. Lưu ý rằng chúng tôi không phát hành bộ nhớ, vì điều đó có thể dẫn đến phân mảnh bộ nhớ còn tồi tệ hơn. Để bật tùy chọn này, thiết lập các tùy chọn trong ConfigProto bởi:

config = tf.ConfigProto() 
config.gpu_options.allow_growth = True 
session = tf.Session(config=config, ...) 

hoặc

with tf.Session(graph=graph_node, config=config) as sess: 
    ... 

Phương pháp thứ hai là lựa chọn per_process_gpu_memory_fraction, mà quyết định cho phần của mức lượng tổng thể của bộ nhớ mà mỗi có thể nhìn thấy GPU nên được cấp phát. Ví dụ, bạn có thể nói TensorFlow chỉ phân bổ 40% tổng số bộ nhớ của mỗi GPU bởi:

config = tf.ConfigProto() 
config.gpu_options.per_process_gpu_memory_fraction = 0.4 
session = tf.Session(config=config, ...) 
Các vấn đề liên quan