【发布时间】:2015-12-13 01:16:13
【问题描述】:
我已经为略有不同的 OCR 任务训练了 2 个模型,我想在生产系统中同时运行它们。
我有一个类可以启动会话并加载保存的模型。我遇到的问题是 2 个模型保存的变量名称相同,因此当我尝试加载它们时它们会发生冲突。
有没有办法在各自的会话中或在各自的图表上运行它们?
【问题讨论】:
-
您的问题解决了吗?你有没有尝试过使用两张图?
标签: tensorflow
我已经为略有不同的 OCR 任务训练了 2 个模型,我想在生产系统中同时运行它们。
我有一个类可以启动会话并加载保存的模型。我遇到的问题是 2 个模型保存的变量名称相同,因此当我尝试加载它们时它们会发生冲突。
有没有办法在各自的会话中或在各自的图表上运行它们?
【问题讨论】:
标签: tensorflow
最简单的选择是在不同的图表中构建两个模型,并为每个图表启动单独的会话。但是,每个会话都拥有自己的设备(CPU 和可能的 GPU),因此每个模型都有单独的线程池,这可能会导致调度行为不理想。要获得良好的性能,必须小心使用 tf.Session 配置选项。
或者,您可以将两个模型组合在同一个图中并使用单个会话。正如您所指出的,两个模型的变量必然具有不同的名称。因此,要完成这项工作,您需要在 construct the tf.Saver 加载模型时提供明确的名称到Variable 的映射。
【讨论】:
name_scope 下创建每个模型就足够了吗?它不如在加载时添加显式前缀那么健壮,但它在受控情况下可能工作得很好。