假如我们得到了如下的checkpoints,
上面的文件主要可以分成三类:一种是在保存模型时生成的文件,一种是我们在使用tensorboard时生成的文件,还有一种就是plugins这个文件夹,这个是使用capture tpuprofile工具生成的,该工具可以跟踪TPU的计算过程,并对你的模型性能进行分析,这里就不想详细介绍了。本文主要介绍前面两种文件的作用:
tensorboard文件
events.out.tfevents.*...: 保存的就是你的accuracy或者loss在不同时刻的值。
graph.pbtxt: 这其实是一个文本文件,保存了模型的结构信息,部分信息如下所示:
node_def { name: "FixedLengthRecordDataset/input_pipeline_task10/buffer_size" op: "Const" device: "/job:worker/task:10/device:CPU:0" attr { key: "dtype" value { type: DT_INT64 } } attr { key: "value" value { tensor { dtype: DT_INT64 tensor_shape { } int64_val: 262144 } } } } node_def { name: "FixedLengthRecordDataset" op: "FixedLengthRecordDataset" input: "FixedLengthRecordDataset/input_pipeline_task10/filenames:output:0" input: "FixedLengthRecordDataset/input_pipeline_task10/header_bytes:output:0" input: "FixedLengthRecordDataset/input_pipeline_task10/record_bytes:output:0" input: "FixedLengthRecordDataset/input_pipeline_task10/footer_bytes:output:0" input: "FixedLengthRecordDataset/input_pipeline_task10/buffer_size:output:0" device: "/job:worker/task:10/device:CPU:0" } ...
保存模型时生成的文件
- checkpoint: 其实就是一个txt文件,存储的是路径信息,我们可以看一下它的内容是什么:
model_checkpoint_path: "model.ckpt-5000" all_model_checkpoint_paths: "model.ckpt-0" all_model_checkpoint_paths: "model.ckpt-5000"
可以看到第一行表示最近的一次checkpoints路径信息,也就是说可能因为某种原因你的模型训练中断了。不过没关系,下次重新训练时,会自动从上次的断点继续训练而不用重新训练了。后面两项则表示已经保存的所有断点路径。
model.ckpt-*.meta: 其实和上面的graph.pbtxt作用一样都保存了graph结构,只不过meta文件是二进制的,它包括 GraphDef,SaverDef等,当存在meta file,我们可以不在文件中定义模型,也可以运行,而如果没有meta file,我们需要定义好模型,再加载data file,得到变量值。
model.ckpt-*.index: 这是一个string-string table,table的key值为tensor名,value为serialized BundleEntryProto。每个BundleEntryProto表述了tensor的metadata,比如那个data文件包含tensor、文件中的偏移量、一些辅助数据等。
model.ckpt-*.data-*: 保存了模型的所有变量的值,TensorBundle集合。