1. 程式人生 > >tensorflow資料結構- SaverDef

tensorflow資料結構- SaverDef


計算圖結構

  1. MetaGraphDef(計算圖)

文章目錄

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
}