使用tensorboard可視化模型

  Tensorboard是TF自帶的可視化工具。它可讓咱們從各個角度觀察與修改模型,好比觀察模型在訓練時的loss動態變化曲線而無需在迭代完畢後再畫圖、繪製神經網絡的結構圖、調節超參數等。下面以最簡單的形式展現tensorboard的經常使用功能。網絡

開啓tensorboard

  打開命令行輸入dom

tensorboard --logdir logs

  而後回車。前兩個參數固定,第三個參數表示tensorboard所要觀察的文件夾位置。後面再使用TF將信息寫入該文件夾中,tensorboard就能夠從中讀取數據用於可視化。輸出以下:函數

  進入獲得的連接,就是tensorboard的界面了。這時你的logs文件夾應該仍是空的,沒有寫入數據,因此tensorboard沒法可視化。下面介紹如何向文件夾中寫入數據。工具

Scalars

  Scalars用來可視化時間步下的狀態曲線,好比loss的變化曲線。下面是代碼示例:優化

import numpy as np
import tensorflow as tf 
from datetime import datetime


current_time = datetime.now().strftime("%Y{y}%m{m}%d{d}-%H-%M-%S").format(y = '',m = '',d='')
log_path = 'logs/'+current_time#——————1——————
log_writer = tf.summary.create_file_writer(log_path)#——————2——————
  
for i in range(100):  
  data1 = np.random.normal()#——————3——————
  data2 = np.random.normal()#——————3——————
  with log_writer.as_default():#——————4——————
    tf.summary.scalar('test1', data1, i) #——————5——————
    tf.summary.scalar('test2', data2, i) #——————5——————

  #1/2:建立以時間命名的用於保存記錄的文件,並獲取用於往該文件中寫入記錄的對象實例。注意!文件要保存在logs文件夾中,tensorboard才能讀取。 spa

  #3:定義每次迭代要記錄的值。命令行

  #4/5:使用#2定義的對象將記錄以scalar的方式寫入,scalar實際上就是畫折線圖,其中三個參數分別表明是:記錄名、此次迭代要保存的值、第幾回迭代。能夠看出,一個文件能夠保存多條記錄,而每條記錄都含有屢次迭代。scala

  在tensorboard界面中,右上角點擊刷新,或者在下拉選項中選擇scalar,tensorboard就會顯示輸出的記錄。界面中還能調節平滑度什麼的,這裏就不記錄了。Tensorboard的一大好處在於它能在代碼執行的時候同步可視化圖像,上面的代碼示例僅有100次迭代,很差體現,能夠本身嘗試一下。code

  可視化後的折線圖界面以下:orm

 Graphs

  可視化模型結構,可是顯示出來的結構很亂,幾乎無法看,暫時沒弄懂看的是什麼。這裏先記錄顯示流程。代碼示例以下:

import numpy as np 
from tensorflow.keras import Input,Model,layers,losses,callbacks 

logdir="logs/test"  
tensorboard_callback = callbacks.TensorBoard(log_dir=logdir)#——————1——————
class TestModel(Model):#——————2——————
  def __init__(self):
    super().__init__()
    self.layer1 = layers.Dense(10) 
    self.layer2 = layers.Dense(1)
  def call(self,inputs):
    x = self.layer1(inputs) 
    x = self.layer2(x)
    return x
model = TestModel()#——————3——————
model.compile(optimizer='rmsprop',loss='mse')#——————4——————
model.fit(np.ones([3,10]),
          np.ones([3,1]),
          callbacks=[tensorboard_callback]) #——————5——————

  #1:定義保存模型結構的文件,獲取一個回調函數對象,用於在fit的時候將模型計算圖記錄並保存。

  #2:繼承Model類自定義咱們的模型,只要實現以上兩個函數便可。

  #3/4/5:實例化模型、編譯,而後fit,讓上面定義的回調函數過一遍咱們的模型,這樣一來它就能將結構記錄下來了。

  而後打開tensorboard網頁,右上角下拉選中GRAPH,就能看到畫出的圖了。以下圖(顯示的玩意兒看不太懂):

  另外,由於是在fit中保存的結構,因此它在保存的時候會多包一層train文件夾。

Hparams

  超參數優化。暫時用不到,之後再記錄。

相關文章
相關標籤/搜索