2017-07-10 25 views
1

我有两个关于使用检查点文件恢复网络的问题。 我使用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

除非你有一个机器学习一个不寻常的使用情况下,我真的建议你给https://keras.io/一展身手。这是一个高级机器学习库,位于TensorFlow或Theano之上,并使建立深度学习模式更快捷。 pip安装keras – DrMcCleod

回答

0

1-从外观上看,你似乎没有命名你的变量。它不保存变量名称。 如果这种情况可能是因为他们在训练中工作,如果您有不同的类型,但是当您尝试使用相同的密钥名称构建字典时,写入内存会混乱并被覆盖。

2-完全恢复你的网络,你必须使用

saver = tf.train.Saver() 
saver.save(session_to_save, 'namefile') 
... 
saver.restore(session_to_restore, 'namefile') 
+0

谢谢。实际上,我把我的代码关于每一个迷你图书馆网站放到一个python类中,然后为了创建它们中的每一个我从这个类中创建一个实例。在定义该类之后,我的项目中所有变量的名称都消失了(基于上面的描述)。我不知道为什么会发生这种情况。 –