tensorflow 可視化(tensorboard顯示)——histogram,scalar

scalar是用來顯示accuracy,cross entropy,dropout等標量變化趨勢的函數。 通過scalar可以看到這些量隨着訓練加深的一個逐步變化的過程,進而可以看出我們模型的優劣。
注意:
1)scalar只能用於單個標量的顯示,不能顯示張量;
2)scalar可以顯示多次訓練的結果

變量

變量則可使用Tensorflow.histogram_summary()方法:

tf.histogram_summary(layer_name+"/weights",Weights) #name命名,Weights賦值

tf.histogram_summary(layer_name+"/weights",Weights) #name命名,Weights賦值

標量

1.在tensorflow構建圖的過程中放入記錄變量

在使用tensorflow構建圖的過程中,在需要記錄變量值的地方放入summary operations。
使用tf.summary.scalar記錄標量
使用tf.summary.histogram記錄數據的直方圖
使用tf.summary.distribution記錄數據的分佈圖
使用tf.summary.image記錄圖像數據
————————————————
在要顯示的標量下添加代碼:

tf.summary.scalar('loss', loss)  # 記錄優化器的變化

在這裏插入圖片描述
注意:使用相同的配置多次訓練,然後相同的數據在同一個圖上顯示的結果,進入該log所在的文件夾,刪除歷史記錄,僅僅保留最新的結果,就會出現一個比較乾淨的圖。

2.合併summary operation

變量tensorflow變量初始化之前合併採集點變量,並且將它們寫到之前定義的log_dir路徑。

 summaries合併
merged = tf.summary.merge_all()
# 寫到指定的磁盤路徑中
train_writer = tf.summary.FileWriter(log_dir + '/train', Session.graph) ##該句也可寫在變量初始化後,或者訓練流程後面
tf.global_variables_initializer().run()

注意這裏的train_writer變量,這裏是定義一個信息的存儲位置,後面在訓練過程中採集到的數據都要通過這個變量寫入文件。

3.在網絡訓練的過程中採集數據

下面就是在網絡的訓練過程中將該記錄的數據記錄下來

#訓練1k次  
for i in range(1000):  
  sess.run(train_step,feed_dict={xs:x_data,ys:y_data})  
  if i%50==0:  
    result = sess.run(merged,feed_dict={xs:x_data,ys:y_data}) #merged也是需要run的  
    train_writer.add_summary(result,i) #result是summary類型的,需要放入writer中,i步數(x軸) 

或者

for i in range(1000):
        batch = mnist.train.next_batch(50)
        summary,_ = session.run([merged,train], feed_dict = {x:batch[0], y:batch[1], keep_prob:0.5})
        train_writer.add_summary(summary,i)
        if i % 100 == 0:
            print("step %4d: " % i)
            print(session.run(accuracy, feed_dict = {x:batch[0], y:batch[1], keep_prob:1}))
    print(session.run(accuracy, feed_dict = {x:mnist.test.images, y:mnist.test.labels, keep_prob:1}))
    train_writer.close()

4.打開tensorboard

進入tensorflow的虛擬環境

tensorboard --logdir="自己存的地址"

複製出現的網址,在網頁中打開即可

顯示多次訓練的結果

要顯示多次訓練的結果,就要在每次訓練的過程中給FileWriter設置不同的目錄。比如第一次訓練設置如下:

train_writer = tf.summary.FileWriter(log_dir + '/train', self.sess.graph)

那麼第二次訓練就可以設置爲:

train_writer = tf.summary.FileWriter(log_dir + '/train_1', self.sess.graph)

這樣當按照常規步驟打開tensorboard時,在面板的左側就會顯示不同的訓練結果文件,如果要打開,則勾選相應的文件即可。
在這裏插入圖片描述
當勾選多個時,在圖中就會以不同的顏色顯示不同的圖像。應該可以實現不同模型但是訓練結果在一個圖中的情況,只需存儲路徑和train_writer相同)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章