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
}

猜你喜欢

转载自blog.csdn.net/qq_39124762/article/details/83857306