Tensorboard工具的介紹和使用方法
Tensorboard中的資料形式:
Tensorboard可以記錄與展示以下資料形式:
標量Scalars;
圖片Images;
音訊Audio;
計算圖Graph;
資料分佈Distribution;
嵌入向量Embeddings。
Tensorboard的使用流程:
1、新增記錄資料的節點:
使用tf.summary.scalar記錄標量;
使用tf.summary.histogram記錄資料的直方圖;
使用tf.summary.distribution記錄資料的分佈圖;
使用tf.summary.image記錄影象資料;
如果有需要。在這一步中可以建立名稱空間,將不同的變數歸到不同的名稱空間下。
如:
with tf.name_scope('summaries'):
# 計算引數的均值,並使用tf.summary.scaler記錄
mean = tf.reduce_mean(var)
tf.summary.scalar('mean', mean)
2、彙總記錄節點:
merged = tf.summary.merge_all()
3、建立一個執行圖,並執行彙總節點,得到彙總的結果
with tf.Session() as sess:
summary = sess.run(merged)
4、日誌書寫器例項化,在例項化的同時傳入 graph 將當前計算圖寫入日誌:
summary_writer = tf.summary.FileWriter(logdir, graph=sess.graph)
5、呼叫日誌書寫器例項物件summary_writer
的add_summary(summary, global_step=i)
方法將所有彙總日誌寫入檔案;
6、呼叫日誌書寫器例項物件summary_writer
的close()
方法寫入記憶體,否則它每隔120s寫入一次。
7、執行tensorboard讀取儲存的日誌資料並顯示出來:
如果 logdir 目錄的子目錄中包含另一次執行時的資料(多個 event),那麼 TensorBoard 會展示所有執行的資料(主要是scalar),這樣可以用於比較不同引數下模型的效果,調節模型的引數,讓其達到最好的效果。
開啟Anaconda prompt,啟用tensorflow所在的環境,然後輸入:
tensorboard --logdir=save_logdir
然後開啟瀏覽器,輸入http://127.0.0.1::6006
如果上面的命令無效,可以試試下面的指令:
tensorboard --logdir=save_logdir --host=127.0.0.1
即可顯示出我們剛才新增的所有資料。
Tensorboard使用案例:
我們建立一個簡單的神經網路,來使用Tensorboard工具。
程式碼如下:
import tensorflow as tf
import numpy as np
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
log_dir = "E:/logs/"
print("created log_dir path")
a = tf.placeholder(dtype=tf.float32, shape=[100, 1], name='a')
with tf.name_scope('add_example'):
b = tf.Variable(tf.truncated_normal([100, 1], mean=-0.5, stddev=1.0), name='var_b')
tf.summary.histogram('b_hist', b)
increase_b = tf.assign(b, b + 0.2)
c = tf.add(a, b)
tf.summary.histogram('c_hist', c)
c_mean = tf.reduce_mean(c)
tf.summary.scalar('c_mean', c_mean)
merged = tf.summary.merge_all()
train_writer = tf.summary.FileWriter(log_dir + '/train', sess.graph) # 儲存位置
test_writer = tf.summary.FileWriter(log_dir + '/test', sess.graph)
sess.run(tf.global_variables_initializer())
for step in range(500):
if (step + 1) % 10 == 0:
_a = np.random.randn(100, 1)
summary, _ = sess.run([merged, increase_b], feed_dict={a: _a}) # 每步改變一次 b 的值
test_writer.add_summary(summary, step)
else:
_a = np.random.randn(100, 1) + step * 0.2
summary, _ = sess.run([merged, increase_b], feed_dict={a: _a}) # 每步改變一次 b 的值
train_writer.add_summary(summary, step)
train_writer.close()
test_writer.close()
print('END!')
執行該.py檔案,然後在指定的路徑下生成了日誌檔案:
開啟Anaconda prompt,然後:
activate tensorflow-gpu
tensorboard --logdir=E:/logs/ --host=127.0.0.1
然後開啟瀏覽器,輸入http://127.0.0.1:6006