2017-07-12 24 views
5

Bir görüntü için vektörleri hesaplamak için keras kullanan bir Python 3 API'sı w/gunicorn'ım dönüyorum, oldukça basit.Keras kullanırken tensorflow grafiğini sıfırlamayı denerken, başarısız oluyor

Her istek için bellekte depolanan verileri nasıl sıfırlayabilirim? Zamanla yavaş yavaş isteklerin cevap vermesi gereken sürede artar. Bir profil oluşturucu çalışması yaptık ve bunun özellikle tensorflow bu çizgi (ayrıca bellek kullanımı sürecinde başına zamanla yavaş yavaş yükselir): Daha uzun olarak daha fazla veri düğümünde olduğu alır

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

. İşte kod yürütmesine edilir:

# 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() 

ben as_default() yardımcı olacağını düşündüm, ama öyle değil. Ben de vektörlerin listesini aldıktan sonra oturumu kapatmaya çalıştım ve bu başarısız oluyor.

cevap

8
from keras import backend as K 
K.clear_session() 
İlgili konular