Я запускаю следующую программу, и каждый раз, когда я нахожусь в вызове API 'build', я вижу, что после того, как процесс завершился, мы рассмотрим еще одну 1 ГБ памяти. Я пытаюсь устранить все из памяти, но я не уверен, что осталось.Tensorflow, Flask и TFLearn Memory Leak
import tensorflow as tf
import tflearn
from flask import Flask, jsonify
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.normalization import local_response_normalization
from tflearn.layers.estimator import regression
app = Flask(__name__)
keep_prob = .8
num_labels = 3
batch_size = 64
class AlexNet():
def __init__(self):
@app.route('/build')
def build():
g = tf.Graph()
with g.as_default():
sess = tf.Session()
# Building 'AlexNet'
network = input_data(shape=[None, 227, 227, 3])
network = conv_2d(network, 96, 11, strides=4, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = conv_2d(network, 256, 5, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = conv_2d(network, 384, 3, activation='relu')
network = conv_2d(network, 384, 3, activation='relu')
network = conv_2d(network, 256, 3, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = fully_connected(network, 4096, activation='tanh')
network = dropout(network, keep_prob)
network = fully_connected(network, 4096, activation='tanh')
network = dropout(network, keep_prob)
network = fully_connected(network, num_labels, activation='softmax')
network = regression(network, optimizer="adam",
loss='categorical_crossentropy',
learning_rate=0.001, batch_size=batch_size)
model = tflearn.DNN(network, tensorboard_dir="./tflearn_logs/",
checkpoint_path=None, tensorboard_verbose=0, session=sess)
sess.run(tf.initialize_all_variables())
sess.close()
tf.reset_default_graph()
del g
del sess
del model
del network
return jsonify(status=200)
if __name__ == "__main__":
AlexNet()
app.run(host='0.0.0.0', port=5000, threaded=True)
Распределение памяти происходит здесь: sess.run (tf.initialize_all_variables()) –
возможно попробовать 'free && sync && echo 3>/proc/sys/vm/drop_caches && free' –
Я запускаю это локально на Mac, поэтому я не уверен, что такое эквивалентная команда. –