面试当中一般也会问到这个问题,多线程与多进程,此处不表。我只想解决我的问题:
两个都是基于tf的模型,一个模型with下结束后,另外一个运行就出错,说模型定义什么的。
搜索了下,发现tf模型需要在各自的图定义下运行,问题是一个是有定义的,一个是库,这个库依赖的是keras,不好搞啊,并不都是with tf.Session() as sess能解决的。
不妨先按照别人的方法试试看,搞个类。
import tensorflow as tf
class ImportGraph():
""" Importing and running isolated TF graph """
def __init__(self, loc):
# Create local graph and use it in the session
self.graph = tf.Graph()
self.sess = tf.Session(graph=self.graph)
with self.graph.as_default():
# Import saved model from location 'loc' into local graph
# 从指定路径加载模型到局部图中
saver = tf.train.import_meta_graph(loc + '.meta',
在处理两个基于TensorFlow的模型时,由于模型定义冲突,导致在一个模型运行后,另一个无法正常运行。尝试使用多进程并行,通过Pool进行处理,发现在4G内存的电脑上效果不佳。在服务器上,当进程数超过一定值时,程序不执行。通过调整进程数和限制数据长度解决了内存爆炸问题,最终发现使用传统的Pool实现并行可以成功运行模型。
订阅专栏 解锁全文
1226





