2016-03-12 17 views

回答

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。相反,你會直接通過修改this loop創建tf.Summary

    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,有沒有辦法添加關於編碼器狀態的總結,例如[這裏](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/seq2seq.py#L323)。我嘗試在編碼器和解碼器之間實現VAE並打印KLD。然而,它失敗,因爲(我猜)它不能評估其他桶的序列。 – lhlmgr