2016-03-12 4 views
1

Я работаю с Seq2Seq example in TensorFlow. Я могу запустить тренинг и увидеть результаты недоумения в наборе разработки. Здорово!Как добавить резюме в учебник seq2seq?

Я просто хочу добавить сводки (особенно scalar_summary, такие как недоумение на dev set) в файл событий и контролировать их в TensorBoard. После reading the documentation я не понимаю, как комментировать translate.py с краткими операциями.

Может ли кто-нибудь помочь мне с простым псевдокодом?

ответ

3

Похоже, что translate.py не создает сводный журнал TensorBoard. (Частью причины может быть то, что большая часть оценки происходит в Python, а не в графике TensorFlow.) Давайте посмотрим, как добавить ее.

  1. Вам необходимо создать tf.train.SummaryWriter. Добавьте следующее перед входом в учебном цикле (here):

    summary_writer = tf.train.SummaryWriter("path/to/logs", sess.graph_def) 
    
  2. Вам нужно создать сводные события для недоумения в каждом ведре. Эти значения вычисляются в Python, поэтому вы не можете использовать обычный tf.scalar_summary() op. Вместо этого, вы будете создавать tf.Summary непосредственно путем модификации this loop:

    perplexity_summary = tf.Summary() 
    
    # Run evals on development set and print their perplexity. 
    for bucket_id in xrange(len(_buckets)): 
        encoder_inputs, decoder_inputs, target_weights = model.get_batch(
         dev_set, bucket_id) 
        _, eval_loss, _ = model.step(sess, encoder_inputs, decoder_inputs, 
               target_weights, bucket_id, True) 
        eval_ppx = math.exp(eval_loss) if eval_loss < 300 else float('inf') 
        print(" eval: bucket %d perplexity %.2f" % (bucket_id, eval_ppx)) 
    
        bucket_value = perplexity_summary.value.add() 
        bucket_value.tag = "peplexity_bucket)%d" % bucket_id 
        bucket_value.simple_value = eval_ppx 
    
    summary_writer.add_summary(perplexity_summary, model.global_step.eval()) 
    
  3. Вы можете добавить другие показатели, построив tf.Summary значения самостоятельно и вызова summary_writer.add_summary().

+0

Привет, mrry, Есть ли способ добавить резюме о encoder_state, например. [Здесь] (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/seq2seq.py#L323). Я попытался реализовать VAE между кодировщиком и декодером и распечатать KLD. Однако он терпит неудачу, потому что (я думаю) он не может оценить последовательности из других ведер. – lhlmgr

Смежные вопросы