大家好。
说明:在着名的CIFAR-10教程之后,我以数据并行方式在多个GPU上训练了一个模型,即具有多个模型图副本,每个副本位于其{{1 }} tf.name_scope()
,tower_0
等,并在这些范围之间共享可训练的变量。
我的需要:为了简化和统一,在推理过程中命名输入张量(例如,与未在多GPU上训练的模型具有相同的图形,因此没有{ {1}}在他们的图表中的顶级域名范围),我想在保存“ .meta”文件时从图表中删除顶级域名tower_1
。
我尝试过的事情:
[没有用] ,例如在参数tower_N
设置为tower_N
的情况下使用tf.train.export_meta_graph()
。首先,此函数在图deeply inside上执行更改。因此,我无法在最终图形中使用它。其次,如果我准备了整个事情,直接加载export_scope
并与tower_0
一起使用,在这种情况下,加载未定义的未绑定输入会遇到问题。
[工作但很丑] ,在训练时,请保留meta_graph.export_scoped_meta_graph()
种“裸”的模型,即不使用其unbound_inputs_col_name=None
名称范围。这样,在我的图形中,我将始终只得到模型的一个顶层副本,该副本具有所需的张量命名。
我将不胜感激,因为在多个GPU上进行训练时保持图形整洁的任务似乎很自然...