TensorFlow提供了一個可視化工具TensorBoard,它可以將訓練過程當中的各類繪製數據進行展現出來,包括標量,圖片,音頻,計算圖,數據分佈,直方圖等,經過網頁來觀察模型的結構和訓練過程當中各個參數的變化。web
Tensorboard經過一個日誌展現系統進行數據可視化,在session運行圖的時候,將各種的數據彙總並輸出到日誌文件中。而後啓動Tensorboard服務,Tensorboard讀取日誌文件,並開啓6006端口提供web服務。讓用戶能夠在瀏覽器中查看數據。瀏覽器
相關的API函數以下;session
tf.summary.scalar() :標量數據彙總,輸出protobufapp
tf.summary.histogram() :記錄變量var的直方圖,輸出到直方圖彙總的protobufdom
tf.summary.image() :圖像數據彙總,輸出protobuf函數
tf.summary.merge() :合併全部的彙總日誌工具
tf.summary.FileWriter() :建立SummaryWriterspa
tf.summary.FileWriter().add_summary()命令行
tf.summary.FileWriter().add_session_log()scala
tf.summary.FileWriter().add_event()
tf.summary.FileWriter().add_graph() : 將protobuf寫入文件的類
代碼以下:
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt train_x = np.linspace(-5, 3, 50) train_y = train_x * 5 + 10 + np.random.random(50) * 10 - 5 # plt.plot(train_x, train_y, 'r.') # plt.grid(True) # plt.show() X = tf.placeholder(dtype=tf.float32) Y = tf.placeholder(dtype=tf.float32) w = tf.Variable(tf.random.truncated_normal([1]), name='Weight') b = tf.Variable(tf.random.truncated_normal([1]), name='bias') z = tf.multiply(X, w) + b tf.summary.histogram('z', z) cost = tf.reduce_mean(tf.square(Y - z)) tf.summary.scalar('loss', cost) learning_rate = 0.01 optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) init = tf.global_variables_initializer() training_epochs = 20 display_step = 2 with tf.Session() as sess: sess.run(init) loss_list = [] merged_summary_op = tf.summary.merge_all() # 合併全部的summary summary_wirter = tf.summary.FileWriter('log/linear', sess.graph) for epoch in range(training_epochs): for (x, y) in zip(train_x, train_y): sess.run(optimizer,feed_dict={X:x, Y:y}) if epoch % display_step == 0: loss = sess.run(cost, feed_dict={X:x, Y:y}) loss_list.append(loss) print('Iter: ', epoch, ' Loss: ', loss) summary_str = sess.run(merged_summary_op, feed_dict={X:train_x, Y:train_y}) summary_wirter.add_summary(summary_str, epoch) w_, b_ = sess.run([w, b], feed_dict={X: x, Y: y}) print(" Finished ") print("W: ", w_, " b: ", b_, " loss: ", loss) plt.plot(train_x, train_x*w_ + b_, 'g-', train_x, train_y, 'r.') plt.grid(True) plt.show()
上述的可視化步驟主要是
1.將須要可視化的變量加入summary,作好可視化的定義操做
2.merged_summary_op = tf.summary.merge_all() # 合併全部的summary
3.建立summary_wirter對象,並將圖寫入文件
4.獲取可視化的數據,經過summary_writer對象將數據進行寫入
在程序運行完,將會在指定好的路徑中生成日誌文件,
經過命令行工具切換到該目錄,
執行命令:tensorboard --logdir=生成的日誌文件的路徑
打開瀏覽器進行查看,
定義的圖的結構: