tf中 tensorboard 工具通過讀取在網絡訓練過程中保存到本地的日志文件實現數據可視化,日志數據保存主要用到 tf.summary 中的方法。
tf.summary中summary是tf中的一個py文件,位置在 '/tensorflow/python/summary/' 文件夾下,提供了像tf.summary.scalar、tf.summary.histogram 等方法,用來把graph圖中的相關信息,如結構圖、學習率、准確率、Loss等數據轉換成 protocol buffer 數據格式,然后再調用 tf.summary.FileWriter 方法把這些數據寫入到本地硬盤,之后就可以借用 tensorboard 工具可視化這些數據。
標量數據匯總和記錄
tf.summary.scalar(name, tensor, collections=None, family=None)
- name: 給保存的數據的命名;
- tensor: 要保存的tensor,在scalar函數中應該是一個標量,如當前的學習率、Loss等;
- collections: 定義保存的數據歸於哪個集合,默認的集合是 '[GraphKeys.SUMMARIES]';
- family:可選參數,如果定義,在Tensorboard顯示的時候,將作為前綴加在變量名前;
變量var的直方圖匯總和記錄
tf.summary.histogram 輸出帶直方圖的匯總的protobuf 數據。
tf.summary.histogram(tag, values, collections=None, name=None)
變量var的圖像匯總和記錄
tf.summary.image(name, tensor, max_outputs=3, collections=None, family=None)
合並匯總
使用 tf.summary.merge(inputs, collections=None, name=None) 對指定的匯總進行合並。
使用 tf.summaries.merge_all(key=_ops.GraphKeys.SUMMARIES) 對所有的匯總進行合並。
啟動所有的匯總操作
merged = tf.summaries.merge_all(key=_ops.GraphKeys.SUMMARIES)
summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
數據寫入本地磁盤
數據寫入本地使用 tf.summary.FileWriter 類中的方法。
summary_writer = tf.summary.FileWriter(args.log_dir, sess.graph)
構造函數:
__init__(self,
logdir,
graph=None,
max_queue=10,
flush_secs=120,
graph_def=None,
filename_suffix=None)
- logdir:事件文件保存目錄
- graph: graph(圖)對象,例如 sess.graph
- max_queue: 隊列中事件和概要的最大數量,默認為10;
- flush_secs: 事件和概要保存到本地磁盤的間隔,默認120S;
- graph_def: 舊版本的graph,已棄用;
- filename_suffix: 可選參數,事件文件的后綴。
事件和匯總加入summary_writer
summary_writer.add_run_metadata(run_metadata, 'step%03d'% i)
summary_writer.add_summary(summary, i)
