2017-07-12 20 views
5

नाकाम रहने मैं कताई कर रहा हूँ keras का उपयोग करता है एक छवि के लिए वैक्टर गणना करने के लिए, बिल्कुल स्पष्ट एक अजगर 3 एपीआई डब्ल्यू/gunicorn tensorflow ग्राफ पुनर्स्थापित करने के लिए प्रयास कर रहा है।जब keras का उपयोग कर,

मैं प्रत्येक अनुरोध के लिए स्मृति में संग्रहीत डेटा को कैसे रीसेट कर सकते हैं? समय के साथ धीरे-धीरे अनुरोध करने में लगने वाले समय में अनुरोध बढ़ते हैं। मैं एक प्रोफाइलर चलाने है और यह विशेष रूप से tensorflow में इस लाइन है (यह भी स्मृति के उपयोग की प्रक्रिया के अनुसार समय के साथ धीरे-धीरे ऊपर जाता है):

#tensorflow/python/framework/ops.py:2317:_as_graph_def 
graph.node.extend([op.node_def]) 

यह लेता है लंबे समय तक के रूप में और अधिक डेटा मोड में होने पर। यहाँ है कोड मैं निष्पादित करें:

# We have 11439MiB of GPU memory, lets only use 2GB of it: 
config = tf.ConfigProto() 
config.gpu_options.per_process_gpu_memory_fraction = 0.22 
sess = tf.Session(config=config) 
set_session(sess) 
sess.graph.as_default() 

# Get the vector for the image 
img_size = (224,224) 
vgg = VGG16(include_top=False, weights='imagenet') 
img = kimage.load_img(tmpfile.name, target_size=img_size) 
x = kimage.img_to_array(img) 
x = np.expand_dims(x, axis=0) 
x = preprocess_input(x) 
pred = vgg.predict(x) 
vectors = pred.ravel().tolist() 

मैंने सोचा था कि as_default() में मदद मिलेगी, लेकिन ऐसा नहीं है। मैंने वैक्टर की सूची प्राप्त करने के बाद सत्र बंद करने का भी प्रयास किया, और यह विफल हो गया।

उत्तर

8
from keras import backend as K 
K.clear_session() 
संबंधित मुद्दे