天天看點

tensorflow筆記:模型的儲存與訓練過程可視化儲存與讀取模型使用tensorboard來使訓練過程可視化

tensorflow筆記系列:

(一) tensorflow筆記:流程,概念和簡單代碼注釋

(二) tensorflow筆記:多層CNN代碼分析

(三) tensorflow筆記:多層LSTM代碼分析

(四) tensorflow筆記:常用函數說明

(五) tensorflow筆記:模型的儲存與訓練過程可視化

(六)tensorflow筆記:使用tf來實作word2vec

儲存與讀取模型

在使用tf來訓練模型的時候,難免會出現中斷的情況。這時候自然就希望能夠将辛辛苦苦得到的中間參數保留下來,不然下次又要重新開始。好在tf官方提供了儲存和讀取模型的方法。

儲存模型的方法:

# 之前是各種構模組化型graph的操作(矩陣相乘,sigmoid等等....)

saver = tf.train.Saver() # 生成saver

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer()) # 先對模型初始化

    # 然後将資料丢入模型進行訓練blablabla

    # 訓練完以後,使用saver.save 來儲存
    saver.save(sess, "save_path/file_name") #file_name如果不存在的話,會自動建立
           

将模型儲存好以後,載入也比較友善,如下所示:

saver = tf.train.Saver()

with tf.Session() as sess:
    #參數可以進行初始化,也可不進行初始化。即使初始化了,初始化的值也會被restore的值給覆寫
    sess.run(tf.global_variables_initializer())     
    saver.restore(sess, "save_path/file_name") #會将已經儲存的變量值resotre到 變量中。
           

簡單的說,就是通過saver.save來儲存模型,通過saver.restore來加載模型

使用tensorboard來使訓練過程可視化

tensorflow還提供了一個可視化工具,叫tensorboard.啟動以後,可以通過網頁來觀察模型的結構和訓練過程中各個參數的變化。如下圖所示

tensorflow筆記:模型的儲存與訓練過程可視化儲存與讀取模型使用tensorboard來使訓練過程可視化

關于如何合理清楚的顯示網絡結構,我目前還不太搞得清楚,而且目前看來也不是太重要;但是要将訓練的過程可視化還是比較友善的。簡單的說,流程如下所示:

  • 使用tf.scalar_summary來收集想要顯示的變量
  • 定義一個summury op, 用來彙總多個變量
  • 得到一個summy writer,指定寫入路徑
  • 通過summary_str = sess.run()
# 1. 由之前的各種運算得到此批資料的loss
loss = ..... 

# 2.使用tf.scalar_summary來收集想要顯示的變量,命名為loss
tf.scalar_summary('loss',loss)  

# 3.定義一個summury op, 用來彙總由scalar_summary記錄的所有變量
merged_summary_op = tf.merge_all_summaries()

# 4.生成一個summary writer對象,需要指定寫入路徑,例如我這邊就是/tmp/logdir
summary_writer = tf.train.SummaryWriter('/tmp/logdir', sess.graph)

# 開始訓練,分批喂資料
for(i in range(batch_num)):
    # 使用sess.run來得到merged_summary_op的傳回值
    summary_str = sess.run(merged_summary_op)

    # 使用summary writer将運作中的loss值寫入
    summary_writer.add_summary(summary_str,i)
           

接下來,程式開始運作以後,跑到shell裡運作

開始運作tensorboard.接下來打開浏覽器,進入

127.0.0.1:6006

就能夠看到loss值在訓練中的變化值了。

繼續閱讀