tensorflow estimator的代码是单独的repo
https://github.com/tensorflow/estimator
1. tensorflow 提供tf.estimator.train_and_evaluate 接口,用于模型的训练和评估,该接口需要三个参数,分别为 estimator,train_spec,eval_spec。
train_and_evaluate 接口实际上是调用estimator的train接口执行训练任务。
2.estimator
1.estimator 对外提供train,evaluate,和predict接口
triain接口在estimator内部实际上是调用内_train_model接口进行训练
_train_model 默认情况下回调用 _train_model_default函数训练模型
_train_model_default会调用 _get_features_and_labels_from_input_fn 获取model_fn接口中需要的 features, labels。features, labels 是通过_get_features_and_labels_from_input_fn 从estimator初始化时传入的input_fn 获取。
_get_features_and_labels_from_input_fn 先调用 _call_input_fn,_call_input_fn会直接调用 input_fn接口,input_fn 返回的是一个tf.data.Dataset对象。然后调用estimator_util.parse_input_fn_result处理 input_fn 返回的tf.data.Dataset对象 。
_train_model_default 调用_train_with_estimator_spec
_train_with_estimator_spec 会自动循环训练过程
tf.data.TextLineDataset 是TextLineDatasetV1 继承 dataset_ops.DatasetV1Adapter
DatasetV1Adapter 继承 DatasetV1
DatasetV1 继承 DatasetV2
TextLineDatasetV1 的父类使用TextLineDatasetV2的实例初始化
所以TextLineDatasetV1 实际上是TextLineDatasetV2
TextLineDatasetV2调用_TextLineDataset
_TextLineDataset 的成员variant_tensor 通过gen_dataset_ops.text_line_dataset 调用 reader_dataset_ops.cc 中的 TextLineDatasetOp
tensorflow/tensorflow/core/kernels/data/reader_dataset_ops.cc TextLineDatasetOp
framework/dataset.h 定义 DatasetBaseIterator DatasetBase
网友评论