利用tensorboard可視化checkpoint模型文件參數分佈

寫在前面:python

      上週微調一個文本檢測模型seglink,將特徵提取層進行凍結,只訓練分類迴歸層,然而查看tensorboard發現裏面有histogram顯示模型各個參數分佈,看了目前這個訓練模型參數分佈壓根就看不懂,很想知道個人預訓練模型的參數分佈是怎麼個狀況,訓練了一天了,模型的參數分佈較預訓練的模型參數有啥變化沒有,怎麼辦呢?web

利用tf.summary將模型參數分佈在tensorboard可視化:瀏覽器

導入須要的庫  設置模型文件夾路徑session

1 import TensorFlow as tf
2 from tensorflow.python import pywrap_tensorflow
model_dir="___"

定義可視化方法spa

一、獲取ckpt路徑,這裏的路徑是checkpoint文件中的路徑(ckpt文件夾中包括:checkpoint文件,index,meta,data四個文件).net

code:日誌

ckpt=tf.train.get_checkpoint_state(model_dir)
ckpt_path=ckpt.model_checkpoint_path

 

二、讀取checkpoint 文件中模型的變量名和變量值code

這裏是使用get_variable_to_shape_map()獲取了一個[key:name of variable      value:the shape of variable]的listblog

code:事件

reader=pywrap_tensorflow.NewCheckpointReader(ckpt_path)
param_dict=reader.get_variable_to_shape_map()

 

三、開一個session,

code:

with tf.Session() as sess:
      validate_writer=tf.summary.FileWriter('./run')
      for key in param_dict:
            if(key.startwith('vgg')):
            vgg_summary=tf.summary.histogram(key,reader.get_tensor(key))
            merge_summary=tf.summary.merge([vgg_summary])#這裏能夠添加其餘須要merge的summary項,若是隻有一個summary也能夠不用merge,
            test_summary=sess.run(merge_summary)
            validate_writer.add_summary(test_summary)

 

tf.summary.FileWriter(event_dir_path)#event_dir_path爲事件日誌文件夾,運行程序以後會在該指定的文件夾中生產events文件。運行TensorFlow計算後,會將各種數據彙總記錄進該日誌文件,tensorboard會讀取這些數據進行解析並生成數據可視化的web頁面。

key.startwith('vgg')在param_dict字典中提取以vgg開頭的key,並獲取相關tensor以histogram的形式彙總

merge_summary=tf.summary.merge([.....])合併指定數據彙總

test_summary=sess.run(merge_summary)執行一步run,獲得merge_summary,並將該summary

validate_writer.add_summary(test_summary)#將當前一步run獲得的summary加入以前設置的validate_writer

附上summary示意圖幫助理解,圖片引用自CSDN網址:https://blog.csdn.net/hongxue8888/article/details/78610305

 

 

最後還要關閉writer

validate_writer.close()

運行代碼以後,執行以下指令:

tensorboard --logdir="./run"#就是以前設置的events日誌文件夾的路徑

而後根據執行結果上的網址,打開瀏覽器便可觀察模型參數分部狀況:

附一張參數分佈圖,具體怎麼研究比較這個直方圖,接下去再研究吧~

小白一枚,進步很慢,但願各路大神道友指教和批評~~~~

相關文章
相關標籤/搜索