假如我們得到了如下的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集合。