首页 > 解决方案 > 无法使用 get_tensor_by_name 恢复 Dropout

问题描述

我试图保存和恢复一些张量。

在保存会话中:

...
self.abc = tf.reduce_sum(self.element_wise_product, 2, name="abc")
self.def= tf.nn.dropout(abc, self.dropout_keep[0], name="def")
... 

保存后,我尝试恢复会话

sess = tf.Session(config=config)
weight_saver.restore(sess, save_file)

pretrain_graph = tf.get_default_graph()
abc= pretrain_graph.get_tensor_by_name('abc:0')
def = pretrain_graph.get_tensor_by_name('def:0')

但我得到了错误:

“名称‘def:0’指的是一个不存在的张量。操作‘def’在图中不存在。”

请帮忙。

标签: tensorflowmachine-learningtensordropout

解决方案


问题是这tf.nn.dropout(abc, self.dropout_keep[0], name="def")是一个 TensorFlow 操作,而不是图中可以恢复的节点。

此外,我会恢复图中我想要执行的节点,例如logits节点,以便我可以获得模型的输出和input节点,以便我可以将数据倒入模型中。因此,我认为没有理由恢复dropout节点。


推荐阅读