Tensorflow API提供了一些经过预先培训的模型,并允许我们使用任何数据集对它们进行培训。
我想知道如何在一个TensorFlow会话中初始化和使用多个图。我想在两个图中导入两个经过训练的模型,并将它们用于对象检测,但是我在一个会话中尝试运行多个图时失败了。
在一个会话中,是否有任何特定的方法可以处理多个图?。
另一个问题是,即使我为两个不同的图创建了两个不同的会话并尝试使用它们,我最终还是会在第一个实例化会话的第二个会话中得到类似的结果。
最佳答案
每个Session
只能有一个Graph
。也就是说,根据你具体想做什么,你有几个选择。
第一个选项是创建两个单独的会话,并将一个图形加载到每个会话中,如the documentation here中所述。您提到使用该方法的每个会话都会得到出乎意料的相似结果,但是如果没有更详细的信息,很难确定具体情况下的问题是什么。我怀疑是同一个图形加载到了每个会话中,或者当您试图分别运行每个会话时,同一个会话将运行两次,但是如果没有更多的详细信息,就很难知道了。
第二个选项是将两个图都加载为主会话图的子图。您可以在图中创建两个范围,并为要在该范围内加载的每个图构建图。然后你可以把它们当作独立的图来处理,因为它们之间没有联系。当运行正常的图形全局函数时,您需要指定这些函数应用于哪个范围。例如,当使用它的优化器对其中一个子图进行更新时,您将需要使用类似于this answer中所示的内容,仅获取该子图范围的可训练变量。
除非您明确需要这两个图能够在张量流图中以某种方式进行交互,否则我建议使用第一种方法,这样您就不需要跳过子图所需的额外环(例如,需要在任何给定条件下筛选您的工作范围n瞬间,以及图形化全局事物在两者之间共享的可能性)。
关于python - 如何在Session中运行多个图形 - Tensorflow API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46617667/