要还原变量的子集,您必须创建一个新
tf.train.Saver变量并将变量的特定列表传递给它,以便在可选
var_list参数中进行还原。
默认情况下,a
tf.train.Saver将创建操作,该操作(i)在调用时保存图形中的每个变量,
saver.save()并且(ii)在调用时在给定检查点中(按名称)查找每个变量
saver.restore()。虽然这适用于大多数常见方案,但您必须提供更多信息才能使用变量的特定子集:
如果只想还原变量的子集,则可以通过调用来获得这些变量的列表
tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope=G_NETWORK_PREFIX)
,并假设您将“ g”网络放置在公共with tf.name_scope(G_NETWORK_PREFIX):
或tf.variable_scope(G_NETWORK_PREFIX):
块中。然后,您可以将此列表传递给tf.train.Saver
构造函数。如果要还原变量的子集和/或它们在检查点中的变量具有 不同的名称 ,则可以传递字典作为
var_list
参数。默认情况下,检查点中的每个变量都与一个 key 相关联, key 是其tf.Variable.name
属性的值。如果目标图中的名称不同(例如,由于添加了作用域前缀),则可以指定一个字典,该字典将字符串键(在检查点文件中)映射到tf.Variable
对象(在目标图中)。



