前段時間在處理tensorflow的tensorboard時發(fā)現(xiàn)當驗證集過大,而導致無法一次性處理時將數(shù)據(jù)寫入summary()是一個錯誤的結果,而在查閱了很多資料后發(fā)現(xiàn)很少有這方面的文章恼布。
而tensorflow官方由于最近好像被槍斃了惦界,不翻墻進不去衬潦,于是在github上發(fā)現(xiàn)一個解決辦法蜡励,再次記錄境钟,幫助新學者锦担。
1、tf.summary
在有足夠的空間的情況下(內(nèi)存或者顯存慨削,根據(jù)自己情況判斷)洞渔,一般會直接將需要的tensor直接寫入到
summary_1 = tf.summary.scalar(name="name_1",tensor=tensor_value_1)
summary_2 = tf.summary.scalar(name="name_2",tensor=tensor_value_2)
summary = tf.summary.merge_all() #summary = tf.summary.merge([summary_1,summary_2])
with tf.Session() as sess:
summary_write = tf.summary.FileWriter(out_dir,sess.graph) #out_dir 為輸出路徑
summary_out = sess.run(summary)
summary_write.add_summary(summary_out)
但是當數(shù)據(jù)過大,無法一次性跑完驗證集的時候就需要自己定義google_protocol_buffer,此時的方案為下:
2缚态、tf.Summary()
with tf.Session() as sess:
summary_write = tf.summary.FileWriter(out_dir,sess.graph) #out_dir 為輸出路徑
t_loss = []
for e in batch_data(dev_data):
loss = sess.run(model.loss,feed_dict={model.input:e})
t_loss.append(loss)
loss = np.mean(loss)
dev_summary = tf.Summary()
dev_summary.value.add(tag="name_1",simple_value=loss)
summary_write.add_summary(dev_summary)
###
or
dev_summary = tf.Summary(value = [tf.Summary.value(tag="name_1",simple_value=loss)])
summary_write.add_summary(dev_summary)
###
其他涉及到的image或者是直方圖等信息可以參考一下方案:
[鏈接地址]https://gist.github.com/FireJohnny/1f82b5f7a3eabbdc7aacdb967fe1b557