Используйте пример Tensorflow LSTM PTB для оценки предложений

Я пытаюсь использовать пример LSTM, обученный согласно Tensorflow Пример LSTM. Этот пример позволяет получить недоумение на всей тестовой выборке. Но мне нужно использовать обученную модель для оценки (получения логарифмов) каждого предложения отдельно (для оценки гипотез вывода декодера 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 предложений, все работает нормально. Но если я передаю в этот код 1 тыс. Предложений, он работает очень медленно и использует много памяти, потому что я создаю 1 тыс. Моделей mtest. Итак, не могли бы вы сказать мне другой способ достичь моей цели? Спасибо.


person user2098753    schedule 06.07.2017    source источник


Ответы (1)


Похоже, что модель может принимать пакет входных данных, который по умолчанию установлен на 20 во всех случаях. Вы должны иметь возможность передать больший пакет предложений одной тестовой модели, чтобы получить результат для всех, без необходимости создавать несколько экземпляров моделей. Это, вероятно, предполагает некоторые эксперименты с читателем, с которыми вы уже знакомы.

person iga    schedule 17.07.2017