从保存的检查点恢复Tensorflow

2024-04-20 07:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在训练一个简单的LSTM,并按照官方文档中的建议保存检查点。一旦我完成了图形的创建和训练,我想检索这个经过训练的模型,并在将来的新数据中对其进行测试。在

我的图表基本上是这样的:

1号区块

#All parameters
#################
x = tf.placeholder declaration
y = tf.placeholder declaration

weights = {'out': tf.Variable initialized from a random distribution}
biases = {'out': tf.Variable initialized from a random distribution}

pred = RNN(x, weights, biases) # Defines an LSTM cell and returns the predictions

cost = f(pred,y)
optimizer = myOptimizer.minimize(cost)

init = tf.global_variables_initializer()

block2——运行培训和保存检查点

^{pr2}$

我正在尝试从另一个脚本还原它,我正在执行block1,然后执行以下操作:

saver = tf.train.Saver()
with tf.Session() as sess:
     saver = tf.train.import_meta_graph('chckpt.meta')
     saver.restore('chckpt')

     sess.run(init)

     predictions = sess.run(pred, feed_dict=test_feed)

我没有得到我应该从检查点得到的预期结果。我正在从保存的模型中恢复一些内容,但现在我的权重似乎是随机的。我怀疑这是因为sess.run(init)行重置了我从检查点恢复的内容并进行了新的随机初始化。但是当我跳过这一行时,我得到了以下错误: Attempting to use uninitialized value rnn/basic_lstm_cell/bias

我做错什么了?在

我尝试在不运行init的情况下手动恢复weight和bias变量,我似乎在检索存储的值。但是要运行pred操作,我需要恢复在RNN()函数中创建的所有变量,这很麻烦。有更好的方法吗?在

我还尝试从我保存的同一脚本中的检查点恢复,不使用sess.run(init)就可以逃脱惩罚。我可以对此运行pred操作并得到正确的结果。但是,它只能在同一个脚本中工作(可能是因为我在恢复脚本中遗漏了一些内容)


Tags: run模型脚本内容inittfout检查点