estimator调用流程

2020-08-05  本文已影响0人  悠悠渔隐

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

上一篇下一篇

猜你喜欢

热点阅读