2017-07-12 12 views
5

kerasを使用してイメージ用のベクトルを計算する、かなり簡単な、Python 3 APIをスピンアップしています。ケラスを使用してテンソルフローグラフをリセットしようとしましたが、失敗しました

リクエストごとにメモリに保存されたデータをリセットするにはどうすればよいですか?ゆっくりと時間がたつにつれて、要求が応答するまでに時間がかかります。 (また、メモリ使用量は、プロセスごとに時間をかけてゆっくりと上がる)私はプロファイラを実行したのだが、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() 
関連する問題