tensorflow資料結構- SaverDef
阿新 • • 發佈:2018-11-08
計算圖結構
- MetaGraphDef(計算圖)
- MetaInfoDef(運算方法)
- OpList(運算方法集合)
- OpDef(運算方法)
- ArgDef(輸入,輸出)
- AttrDef(屬性)
- OpDef(運算方法)
- OpList(運算方法集合)
- GraphDef (連線結構)
- NodeDef(節點)
- SaverDef (模型持久化)
- CheckpointFormatVersion(模型定義使用的版本)
- map<string, CollectionDef> (集合)
- NodeList(節點value)
- BytesList(序列化value)
- map<string, SignatureDef>(簽名)
- AssetFileDef (權重值)
- MetaInfoDef(運算方法)
文章目錄
SaverDef
https://github.com/tensorflow/tensorflow/blob/r1.11/tensorflow/core/protobuf/saver.proto
記錄持久化模型時需要用到的一些引數,比如儲存到的檔名,儲存操作和載入操作的名稱以及儲存頻率,清理歷史記錄等
message SaverDef { //儲存或恢復模型checkpoint時的張量名稱。 string filename_tensor_name = 1; //給出持久化運算所對應的節點名稱 string save_tensor_name = 2; //恢復模型checkpoint時要執行的操作名稱。 string restore_op_name = 3; //要保留的最大checkpoint數。 如果為0,則不刪除checkpoint。 //如果儲存checkpoint數量大於了max_to_keep則把之前的check刪除 int32 max_to_keep = 4; // 是否分割儲存檔案,每個裝置有一個具有Variable節點的檔案。 bool sharded = 5; //每經過多長時間額外儲存一個 //多久保留一個額外的checkpoint。 //如果未指定,則僅保留最後一個“max_to_keep”checkpoint; //如果指定,除了保留最後一個“max_to_keep”checkpoint之外, //每n小時的訓練將保留一個額外的checkpoint。 float keep_checkpoint_every_n_hours = 6; // checkpoint 格式版本 // 用於識別已儲存的(在磁碟內)checkpoint CheckpointFormatVersion version = 7; }
max_to_keep和keep_checkpoint_every_n_hours可以在例項化tf.trian.Saver()類的時候進行定義。
CheckpointFormatVersion
enum CheckpointFormatVersion {
//內部遺留格式。
LEGACY = 0;
// 不推薦使用的格式:tf.Saver(),它與tensorflow :: table :: Table一起使用。
V1 = 1;
// 目前的格式:tf.train.Saver() 效率更高。
V2 = 2;
}
案例
saver_def {
//儲存的張量名稱
filename_tensor_name : "save/Const:0"
//儲存時執行的節點
save_tensor_name : "save/control_dependency:0"
//恢復時執行的節點
restore_op_name : "save/restore_all"
//最多儲存5給checkpoint
max_to_keep : 5
//沒每間隔10000.0多儲存一個checkpoint
keep_checkpoint_every_n_hours: 10000.0
}