在使用tf來訓練模型的時候,難免會出現中斷的情況。這時候自然就希望能夠將辛辛苦苦得到的中間參數保留下來,不然下次又要重新開始。
保存模型的方法:
#之前是各種構建模型graph的操作(矩陣相乘,sigmoid操作等...) saver=tf.train.Saver()#生成saver with tf.Session() as sess: sess.run(tf.global_variables_initializer())#先對模型進行初始化 #然后將數據丟入模型進行訓練blabla #訓練完之后,使用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')#會將已經保存的變量值restore到變量中
使用tensorboard來使訓練過程可視化
tensorflow還提供了一個可視化工具,叫tensorboard.啟動以后,可以通過網頁來觀察模型的結構和訓練過程中各個參數的變化。
流程如下所示:
1.使用tf.scalar_summary來收集想要顯示的變量
2.定義一個summary op,用來匯總多個變量
3.得到一個summary writer,指定寫入路徑
4.通過summary_str=sess.run()
#由之前的各種運算得到此批數據的loss loss=...... #使用tf.scalar_summary來收集想要顯示的變量,命名為loss tf.scalar_summary('loss',loss) #定義一個summary op,用來匯總由scalar_summary記錄的所有變量 merged_summary_op=tf.merge_all_summaries() #生成一個summary writer對象,需要指定寫入路徑 summary_writer=tf.train.SummaryWriter('/tmp/logdir',sess.graph) #開始訓練,分批喂數據 for i in range(batch_sum): #使用sess.run來得到merged_summary_op的返回值 summary_str=sess.run(merged_summary_op) #使用summary writer將運行中的loss值傳入 summary_writer.add_summary(summary_str,i)
接下里,程序開始運行之后,到shell中運行:
$ tensorboard --logdir /tmp/logdir
開始運行tensorboard.接下來打開瀏覽器,進入127.0.0.1:6006 就能夠看到loss值在訓練中的變化值了。
