Skip to main content
 首页 » 编程设计

python之如何恢复 tensorflow 模型

2025年04月02日29小虾米

我正在尝试使用 .ckpt 恢复模型文件,这是我通过运行 word2vec_optimized.py 得到的在tensorflow/models/embedding .我不确定如何恢复变量以便我可以加载模型并使用它,因为所有 tf​​ 变量都封装并初始化在 tensorflow/models/embedding/word2vec_optimized.py 中的类中。 .任何帮助,将不胜感激。

此外,如果我“恢复”.ckpt创建,我现在有一个Wor2Vec吗?实例或者当我使用 .ckpt 恢复模型时我实际得到了什么?

请您参考如下方法:

当您在保护程序上调用保存功能时,您将它传递给您用于训练模型的 tf.Session。这包含对包含所有变量的图形的引用。不要混淆 python 变量和 tensorflow 变量。即使您在 python 中不再有指向您创建的 tensorflow 变量的变量,如果它是计算图的一部分,它仍然存在。创建模型后,尝试运行以下代码。

for v in tf.all_variables(): 
    print(v.name) 

这将打印出您创建的每个变量的名称。默认情况下,保存程序将保存所有这些。只要变量在您恢复它们时具有相同的名称,那么它们是在哪里创建的并不重要。只需确保在将所有变量添加到模型后进行恢复即可。当您为变量提供初始化程序时,初始化仅在您调用 sess.run(tf.initialize_all_variables()) 时运行。如果您只是恢复值,则不需要调用它。我经常使用下面的代码。

sess = tf.Session() 
saver = tf.train.Saver() 
if 'restore' in sys.argv: 
    saver.restore(sess, '/media/chase/98d61322-9ea7-473e-b835-8739c77d1e1e/model.chk') 
else: 
    sess.run(tf.initialize_all_variables()) 

当我使用在其中创建变量的 thensorflow RNN 类时,这段代码工作正常。