我正在使用Seq2Seq example in TensorFlow。我可以運行培訓並查看開發集合上的困惑輸出。這很棒!如何將摘要添加到seq2seq教程?
我只是想在事件文件中添加摘要(特別是scalar_summary
,比如dev設置上的困惑)並在TensorBoard中監視它們。在reading the documentation之後,我不明白如何用摘要操作符註釋translate.py
。
任何人都可以用簡單的僞代碼來幫助我嗎?
我正在使用Seq2Seq example in TensorFlow。我可以運行培訓並查看開發集合上的困惑輸出。這很棒!如何將摘要添加到seq2seq教程?
我只是想在事件文件中添加摘要(特別是scalar_summary
,比如dev設置上的困惑)並在TensorBoard中監視它們。在reading the documentation之後,我不明白如何用摘要操作符註釋translate.py
。
任何人都可以用簡單的僞代碼來幫助我嗎?
它看起來像translate.py
根本不會創建TensorBoard彙總日誌。 (部分原因可能是大部分評估是在Python中發生的,而不是在TensorFlow圖中)。讓我們看看如何添加一個。
您需要創建一個tf.train.SummaryWriter
。在進入訓練循環(here)之前增加以下內容:
summary_writer = tf.train.SummaryWriter("path/to/logs", sess.graph_def)
你需要創建彙總事件在每個桶的困惑。這些值是用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())
你可以自己構建tf.Summary
值,並呼籲summary_writer.add_summary()
添加其他指標。
嗨mrry,有沒有辦法添加關於編碼器狀態的總結,例如[這裏](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/seq2seq.py#L323)。我嘗試在編碼器和解碼器之間實現VAE並打印KLD。然而,它失敗,因爲(我猜)它不能評估其他桶的序列。 – lhlmgr