2017-02-16 25 views
2

У меня есть класс python Tensorflow, который вызывается из конечной точки REST и передается в URL-адресе для изображения. Каждый раз, когда инициируется новый запрос, он вызывает метод create_graph, который считывает локальный файл .pb. Этот файл не изменяется от запроса к запросу. Поэтому я считаю, что не рекомендуется использовать ресурсы и время для чтения этого файла по каждому запросу.Как избежать чтения графика для каждого запроса в Tensorflow

код ниже:

import numpy as np 
import tensorflow as tf 
import urllib2 

class MyTensorflow: 

    def __init__(self, url): 
    self.imageUrl = imageUrl 

    def create_graph(self): 
    with tf.gfile.FastGFile("/path/to/model.pb", 'rb') as f: 
     graph_def = tf.GraphDef() 
     graph_def.ParseFromString(f.read()) 
     _ = tf.import_graph_def(graph_def, name='') 

    def run_inference_on_image(self): 
    image_string = urllib2.urlopen(self.imageUrl).read() 
    with tf.Session() as sess: 
     ... 
     ... 
     return a_text_value 

Приведенный выше код вызывается из flask_restful так:

c = my_tensorflow.MyTensorflow(args['url']) 
    c.create_graph() 
    returned = c.run_inference_on_image() 

Вопрос

Есть ли способ, чтобы вызвать только create_graph на первый запрос, а затем не вызывать его до перезапуска службы?

+0

'before_first_request (f)' Регистрирует функцию, которая должна быть запущена до первого запроса к этому экземпляру приложения. Что насчет этого? – metmirr

ответ

0

Для обслуживания: Создайте сеанс только один раз за процесс. Вы можете многократно вызывать Session.run().