Wpisuję API Pythona 3 w/gunicorn, które używa kerasów do obliczania wektorów dla obrazu, całkiem proste.Próba resetowania wykresu tensorflow podczas korzystania z kerasów, nieudane
Jak mogę zresetować dane przechowywane w pamięci dla każdego żądania? Powoli wraz z upływem czasu liczba zapytań rośnie w odpowiedzi. Zabrakło mi profilera i to konkretnie ta linia w tensorflow (również wykorzystanie pamięci idzie powoli w czasie każdego procesu):
#tensorflow/python/framework/ops.py:2317:_as_graph_def
graph.node.extend([op.node_def])
To trwa już tak więcej danych znajduje się w węźle. Oto kod I wykonanie:
# 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()
Myślałem as_default()
pomoże, ale tak nie jest. Próbowałem również zamknąć sesję po otrzymaniu listy wektorów, a to nie powiedzie się.