1. 程式人生 > >Tensorboard工具的介紹和使用方法

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_writeradd_summary(summary, global_step=i)方法將所有彙總日誌寫入檔案;

6、呼叫日誌書寫器例項物件summary_writerclose()方法寫入記憶體,否則它每隔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