[英]Relation between the size of TensorFlow's checkpoint file and number of parameters
我想知道TensorFlow檢查點文件的大小與模型參數數量之間的關系。
我有一個包含1.8
萬個參數的模型,它應該需要大約7
MB 的內存(假設(4 * 1.8 * 10^6) / 1024^2
)。 但是,保存的檢查點顯然更大
model-5000.data-00000-of-00001 15MB
model-5000.index 15K
在 Caffe 中,4 的分數對於caffemodel
似乎總是正確的。
您是否使用了具有動量的優化器? 這將使保存的參數數量增加一倍(每個參數都有一個相應的動量參數)。 如果您使用 Adam,由於平方梯度估計器,保存的參數數量實際上將增加三倍。 其他優化器會以不同的方式變化。
您可以手動檢查檢查點以查看正在存儲哪些變量。
我會說檢查點文件不是100%可比.caffemodel文件。 除了模型參數外,它將包含更多內容,例如,加載數據節點,權重初始化程序,保護程序節點等。參數也將另存為可訓練的變量,這會占用更多空間。
為了獲得與caffe的.caffemodel類似的東西,您需要將變量轉換為常量(稱為凍結圖),然后將圖另存為二進制原型文件(.pb)。 這樣做將刪除圖中所有不必要的節點。
要轉換為.pb,您可以按照以下步驟進行調整:
output_graph_def = tf.graph_util.convert_variables_to_constants(
sess, # The session is used to retrieve the weights
sess.graph_def, # The graph_def is used to retrieve the nodes
output_node_names # The output node name
)
# Finally we serialize and dump the output graph to the filesystem
with open('mode.pb', 'wb') as f:
f.write(output_graph_def.SerializeToString())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.