我有一个 flask 应用程序,它首先加载一个 keras 模型,然后执行预测功能。根据this answer我将 tensorflow 图保存在一个全局变量中,并将相同的图用于预测函数。
def load_model():
load_model_from_file()
global graph
graph = tf.get_default_graph()
def predict():
with graph.as_default():
tagger = Tagger(self.model, preprocessor=self.p)
return tagger.analyze(words)
@app.route('/predict', methods=['GET'])
def load_and_predict():
load_model()
predict()
但是,每当向服务器发送多个请求时,这就会导致问题。如何使这段代码线程安全,或者更具体地说,如何在多线程环境中正确使用 tensorflow 图?
最佳答案
通常,在 tensorflow 中使用线程时应该使用 session 。
intra_parallel_thread_tf = 1
inter_parallel_thread_tf = 1
session_conf = tf.ConfigProto(intra_op_parallelism_threads=intra_parallel_thread_tf,
inter_op_parallelism_threads=inter_parallel_thread_tf)
tf.Session(graph=tf.get_default_graph(), config=session_conf)
GRAPH = tf.get_default_graph()
但这很笼统。这也取决于你得到的错误。
https://stackoverflow.com/questions/54129714/
相关文章:
odata - 使用 OData $filter 通过 flagStatus 获取 Microsof
c# - 在 C# .NET Core 的断言有效负载中使用自定义数据为第 3 方应用程序创建 SA
python-3.x - 无法使 Python 3.7 在 Ubuntu 18.04 中工作
java - 接受多部分文件的 DELETE 方法的 Mockmvc
reactjs - Chart 中的 SVG 在 Prop 更改后不会重新渲染。 react + d
javascript - TypeORM M2O O2M关系使用级联插入时外键为空
java - Hibernate需要很长时间才能得到查询结果