使用Tensorflow LSTM PTB示例评分句子

时间:2017-07-06 10:44:32

标签: tensorflow lstm scoring language-model

我尝试使用根据Tensorflow LSTM example训练的示例LSTM。此示例允许在整个测试集上感到困惑。但是我需要使用训练的模型分别对每个句子进行评分(得到loglikes)(以评估STT解码器输出的假设)。我稍微修改了reader并使用了代码:

mtests=list()
with tf.name_scope("Test"):        
    for test_data_item in test_data:
      test_input.append(PTBInput(config=eval_config, data=test_data_item, name="TestInput"))   
    with tf.variable_scope("Model", reuse=True, initializer=initializer):
      for test_input_item in test_input:
        mtests.append(PTBModel(is_training=False, config=eval_config,
                     input_=test_input_item))
sv = tf.train.Supervisor(logdir=FLAGS.model_dir)

with sv.managed_session() as session:
  checkpoint=tf.train.latest_checkpoint(FLAGS.model_dir)      
  sv.saver.restore(session, checkpoint)
  sys.stderr.write("model restored\n") 

  for mtest in mtests:      
    score, test_perplexity = run_epoch_test(session, mtest)
    print(score)

因此,使用该代码,我可以独立得到每个句子的分数。如果我传了5个句子,那就行了。但是,如果我将1k句子传递给此代码,它的工作速度非常慢,并且会占用大量内存,因为我创建了1k模型mtest。那么,你能告诉我另一种达到目标的方法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

模型似乎可以接受一批输入,默认情况下在所有情况下都设置为20。您应该能够将更大批量的句子提供给一个测试模型,以获得所有这些句子的输出,而无需创建多个模型实例。这可能涉及一些您已经熟悉的读者的实验。