我有两个关于使用检查点文件恢复网络的问题。 我使用this code来恢复我的网络。我只需要原始网络的某些部分。实际上,我的原始网络包含5个卷积(非常小)的网络,所有这些都连接到最后一个完全连接的大层。我只想拥有我的5个迷你小号。 我为网络中的每个变量和每个层定义名称。 (我注意到当我使用日志数据运行tensorboard时,一切正常。这意味着,我有适当的所有变量和张量的名称)
1-我的第一个问题是当我想在恢复的网络中按名称找到这些变量中的任何一个时,我面对"没有这个名称的张量"错误。我还用inspect_checkpoint.py测试我的检查点文件,在输出中它只返回一个变量:
Variable (DT_INT32) []
另一方面,我用这段代码再次测试了它:
from tensorflow.python import pywrap_tensorflow
checkpoint_path = os.path.join('./', 'model.ckpt-100')
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path)
var_to_shape_map = reader.get_variable_to_shape_map()
for key in var_to_shape_map:
print("tensor_name: ", key)
print(reader.get_tensor(key))
然后它返回:
tensor_name: Variable
101
我找不到这个问题的原因。这里有人有过这个问题吗?
2-根据我以前恢复网络的网站,我有点困惑。实际上,我想要恢复我的全部5个迷你网(所有这些迷你网都在最后一层完全连接)。所以,我真的不知道什么是从其最后一个完全连接的层恢复每一个迷你信号圈的正确方法。
答案 0 :(得分:0)
1-从它的外观来看,似乎你没有命名你的变量。它不保存变量名称。 如果情况如此,如果您有不同的类型,它们可以在训练中工作,但是当您尝试构建具有相同键名的字典时,写入内存会变得混乱并被覆盖。
2-要完全恢复您的网络,您必须使用
saver = tf.train.Saver()
saver.save(session_to_save, 'namefile')
...
saver.restore(session_to_restore, 'namefile')