最近在學習Tensorflow實戰,可以在熟悉的章節上策馬奔騰,但是有些章節就舉步維艱(比如這一節),此篇目的是深入理解此章節。
持久化原理及數據格式整理
當使用save.save()時,TensorFlow程序會自動生成4個文件,這4個文件用來實現TensorFlow模型的持久化:
meta_info_def : 它記錄了TensorFlow計算圖中的元數據以及TensorFlwo程序中所有使用到的運算方法的信息
graph_def : 主要記錄了TensorFlow計算圖上的節點信息
saver_def : 記錄了持久化模型時需要用到的一些參數,比如保存到文件的文件名,保存操作和加載操作的名稱以及保存頻率、 清理歷史信息等等
collection_def : 屬性是一個從集合名稱到集合內容的映射,其中集合名稱爲字符串,集合內容爲CollectionDef Protocol Buffer
然後具體操作一波
import tensorflow as tf
from tensorflow.python.framework import graph_util
v1 = tf.Variable(tf.constant(1.0, shape=[1]),name='v1')
v2 = tf.Variable(tf.constant(2.0,shape=[2]),name='v2')
result = v1+v2
init_op = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(init_op)
saver.export_meta_graph("./model.ckpt.meda.json",as_text=True)
文件夾中粗現了一下文件
使用chrome打開,發現十幾頁的數據.... 先說一下只管感受吧,長度上graph_def>meta_info_def>saver_def=collection_def
奇怪的是colection_def出現了兩次
結論:collection_def每個存的是集合信息,graph_def存的是節點信息, 包含v1/assign, const, v1/read, add, save/const等等節點, 並不僅僅包含圖中所示的3個節點, meta_info_def會存有類似上面的信息,大概T類似於java模板類的一種東西, saver_def主要存有關於save相關的信息。
未完待續