如何恢复LSTM图层

Ann*_*naR 7 tensorflow

如果我能在保存和恢复LSTM方面获得一些帮助,我将非常感激.

我有这个LSTM层 -

# LSTM cell
cell = tf.contrib.rnn.LSTMCell(n_hidden)
output, current_state = tf.nn.dynamic_rnn(cell, word_vectors, dtype=tf.float32)

outputs = tf.transpose(output, [1, 0, 2])
last = tf.gather(outputs, int(outputs.get_shape()[0]) - 1)

# Saver function
saver = tf.train.Saver()
saver.save(sess, 'test-model')
Run Code Online (Sandbox Code Playgroud)

保存程序保存模型,并允许我保存和恢复LSTM的权重和偏差.但是,我需要恢复此LSTM图层并为其提供一组新输入.

为了恢复整个模型,我正在做:

with tf.Session() as sess:
    saver = tf.train.import_meta_graph('test-model.meta')
    saver.restore(sess, tf.train.latest_checkpoint('./'))
Run Code Online (Sandbox Code Playgroud)
  1. 我是否可以使用预先训练过的重量和偏差来初始化LSTM细胞?

  2. 如果没有,我该如何恢复此LSTM图层?

非常感谢你!

vij*_*y m 1

您已经在加载模型以及模型的权重。您所需要做的就是get_tensor_by_name从图中获取任何张量并将其用于推理。

例子:

with tf.Session() as sess:
    saver = tf.train.import_meta_graph('test-model.meta')
    saver.restore(sess, tf.train.latest_checkpoint('./'))

   # Get the tensors by their variable name
   word_vec = = detection_graph.get_tensor_by_name('word_vec:0')
   output_tensor = detection_graph.get_tensor_by_name('outputs:0')

   sess.run(output_tensor, feed_dict={word_vec: ...}) 
Run Code Online (Sandbox Code Playgroud)

在上面的示例中word_vec, 和outputs是在创建图形期间分配给张量的名称。确保指定名字,以便可以通过名字来称呼他们。