TensorFlow提供了一個用於保存模型的工具以及一個可視化方案
這里使用的TensorFlow為1.3.0版本
一、保存模型數據
- 模型數據以文件的形式保存到本地;
- 使用神經網絡模型進行大數據量和復雜模型訓練時,訓練時間可能會持續增加,此時為避免訓練過程出現不可逆的影響,並驗證訓練效果,可以考慮分段進行,將訓練數據模型保存,然后在繼續訓練時重新讀取;
- 此外,模型訓練完畢,獲取一個性能良好的模型后,可以保存以備重復利用;
模型保存形式如下:
保存模型數據的基本方法:
save_dir = 'model/graph.ckpt' saver = tf.train.Saver() sess = tf.Session()
#保存模型
saver.save(sess, save_dir) #讀取模型
saver.restore(sess, save_dir)
可以在訓練進行之后保存模型saver.save(sess, save_dir) ,
已訓練的模型可以在此次訓練或預測前讀取saver.restore(sess, save_dir),
二、訓練過程可視化方法
TensorFlow提供了一個Tensorboard工具進行可視化,此工具可以將訓練過程中輸出的數據使用Web瀏覽器輸出顯示,該工具需要在控制台啟動;
保存的數據文件如下:
保存訓練數據的基本方法
TensorFlow可以保存與顯示的數據形式:
- 標量Scalars
- 圖片Images
- 音頻Audio
- 計算圖Graph
- 數據分布Distribution
- 直方圖Histograms
- 嵌入向量Embeddings
Scalars是常用的可視化數據,如loss值,這里為一個浮點數,在構建TensorFlow數據圖時,使用tf.summary.scalar()定義summary節點,數據圖執行后,此數據將被輸出到文件;
with tf.name_scope('var'):
tf.summary.scalar('mean', tf.reduce_mean(var)) tf.summary.scalar('max', tf.reduce_max(var)) tf.summary.scalar('min', tf.reduce_min(var))
loss = tf.reduce_mean(tf.reduce_sum(tf.square((ylabel - yout)),reduction_indices = [1])) tf.summary.scalar('loss', loss)
同樣輸出為直方圖
hidel1 = tf.matmul(inputData,Weights) + basis tf.summary.histogram('HiddenLayer1', hidel1)
在定義好如上節點后,需要進行合並以便運行這些的summary節點,之后使用方法tf.summary.FileWriter()將數據輸出
log_dir = 'tblog/' merged_summary_op = tf.summary.merge_all() summary_writer = tf.summary.FileWriter(log_dir, sess.graph)
最后在運行過程中獲取數據並輸出,可以每隔幾次迭代輸出一次數據
epochs = 10000 #訓練次數
for i in range(epochs): sess.run(train) if i % 1000 == 0: print(sess.run(loss)) summary_str = sess.run(merged_summary_op) summary_writer.add_summary(summary_str, i) #輸出一次數據
啟動Tensorboard
訓練過程中會輸出數據文件,此時可以實時的顯示可視化結果,也可以訓練結束后查看可視化結果;
Tensorboard需要手動啟動,在Windows或Linux環境中的啟動命令:
tensorboard --logdir=
如:tensorboard --logdir=F:\tblog
注:Windows下需要在數據文件的根目錄執行此命令;
本機為Windows環境:
在瀏覽器中輸入地址http://DESKTOP-6INT0GT:6006,為了保證兼容性,最好使用Chrome進行可視化;
結果:
同樣可以查看數據圖的可視化結構