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.啟動以後,可以通過網頁來觀察模型的結構和訓練過程中各個參數的變化。如下圖所示

關于如何合理清楚的顯示網絡結構,我目前還不太搞得清楚,而且目前看來也不是太重要;但是要将訓練的過程可視化還是比較友善的。簡單的說,流程如下所示:
- 使用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值在訓練中的變化值了。