擅长:python、mysql、java
<p>我不得不修改一下代码,编写自己的恢复函数。我决定将检查点文件作为字典加载,变量名作为键,相应的numpy数组作为值,如下所示:</p>
<pre><code>checkpoint_path = '/path/to/checkpoint'
from tensorflow.python import pywrap_tensorflow
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path)
var_to_shape_map = reader.get_variable_to_shape_map()
key_to_numpy = {}
for key in var_to_shape_map:
key_to_numpy[key] = reader.get_tensor(key)
</code></pre>
<p>我已经有了一个函数,其中创建了所有变量,并从图<code>N</code>调用该函数,并使用所需的名称。我修改了它以使用从字典查找获得的numpy数组初始化变量。为了使查找成功,我只删除了添加的父名称范围,如下所示:</p>
^{pr2}$
<p>这是一种更为老套的方法。我没有使用@edit的答案,因为我已经编写了上面的代码。另外,我的所有权重都是在一个函数中创建的,该函数将这些权重赋给变量<code>var</code>,并返回它。因为这类似于函数式编程,变量<code>var</code>不断被覆盖。<code>var</code>从不向更高级别的函数公开。要使用@edit的答案,我必须在每次初始化时使用不同的张量变量名,并以某种方式将其公开给更高级别的函数,以便保存程序可以在它们的答案中将它们用作<code>var_to_be_restored_to</code>。在</p>
<p>但是@edit的解决方案是不那么老套的解决方案,因为它遵循文档化的用法。所以我接受这个答案。我所做的可能是另一种解决办法。在</p>