2016-11-28 101 views
0

我训练了一个自动编码器并使用Saver保存了会话。现在我想要训练一个单独的模型,它将使用一堆训练有素的变量,我必须对输入进行编码并将其传递给MLP。问题是我无法将autoencoder模型加载到我的新模型中,即使使用Saver的导出/导入功能也是如此。TensorFlow:如何将一个模型的可训练变量恢复到另一个?

这甚至可能吗? 我不断收到 “无法打开encoder.ckpt:数据丢失:不是的SSTable(坏的幻数),也许你的文件是不同的格式,你需要使用不同的恢复操作?

任何帮助,将不胜感激!

+0

如果您传递给保护程序中的变量在两个模型具有相同的名字,那么这应该工作。但是,您提到的错误与此无关。你能发布完整的堆栈跟踪吗? –

回答

0

这大概应该是一个评论,但作为@Alexandre帕索斯提到,saver.restore(encoder.ckpt)应该,如果你以前定义的所有变量/操作的工作。如果你没有,你将需要加载存储的图作为

saver = tf.train.import_meta_graph(encoder.ckpt.meta) 
saver.restore(encoder.ckpt) 

然后,如果你只是想抓住一些变量从模型中,您可以通过

graph = tf.get_default() 
restored_var = graph.get_tensor_by_name(restored_var_name) 

你也这样做可能想要检查你的检查点文件,以确保你有编码路径给你的encoder.ckpt文件。

相关问题