tf.estimator API技术手册(1)——tf.estimator概览

tf.estimator API技术手册(1)——tf.estimator概览

  • (一)前 言
  • (二)Estimator 的优势
  • (三)预创建的 Estimator 程序的结构
    • (1)预创建的 Estimator 程序的结构
      • (a)编写一个或多个数据集导入函数
      • (b)定义特征列。
      • (c)实例化相关的预创建的 Estimator。
      • (d)调用训练、评估或推理方法。
    • (2)预创建的 Estimator 的优势
  • (四)推荐的工作流程
  • (五)总 结

(一)前 言

Estimator 是 一种可极大地简化机器学习编程的高阶 TensorFlow API。Estimator 会封装下列操作:

  • 训练
  • 评估
  • 预测
  • 导出以供使用

我们可以使用预创建的 Estimator,也可以自行编写自定义 Estimator。所有 Estimator(无论是预创建的还是自定义)都是基于 tf.estimator.Estimator 类的类。

(二)Estimator 的优势

Estimator 具有下列优势:

  • 可以在本地主机上或分布式多服务器环境中运行基于 Estimator 的模型,而无需更改模型。此外,您可以在 CPU、GPU 或 TPU
    上运行基于 Estimator 的模型,而无需重新编码模型。
  • Estimator 简化了在模型开发者之间共享实现的过程。
  • 可以使用高级直观代码开发先进的模型。简言之,采用 Estimator 创建模型通常比采用低阶 TensorFlow API 更简单。
  • Estimator 本身在 tf.layers 之上构建而成,可以简化自定义过程。
  • Estimator 会自行构建计算图。
  • Estimator 提供安全的分布式训练循环,可以控制如何以及何时:
    • 构建图
    • 初始化变量
    • 开始排队
    • 处理异常
    • 创建检查点文件并从故障中恢复
    • 保存 TensorBoard 的摘要

使用 Estimator 编写应用时,我们必须将数据输入管道从模型中分离出来。这种分离简化了不同数据集的实验流程。

(三)预创建的 Estimator 程序的结构

(1)预创建的 Estimator 程序的结构

依赖预创建的 Estimator 的 TensorFlow 程序通常包含下列四个步骤:

(a)编写一个或多个数据集导入函数

每个数据集导入函数都必须返回两个对象:

  • 一个字典,其中键是特征名称,值是包含相应特征数据的张量(或 SparseTensor)
  • 一个包含一个或多个标签的张量

例如,以下代码展示了输入函数的基本框架:

def input_fn(dataset):
   ...  # 返回特征和标签值
   return feature_dict, label

(b)定义特征列。

每个 tf.feature_column 都标识了特征名称、特征类型和任何输入预处理操作。例如,以下代码段创建了三个存储整数或浮点数据的特征列。前两个特征列仅标识了特征的名称和类型。第三个特征列还指定了一个 lambda,该程序将调用此 lambda 来调节原始数据:

# 定义三个特征
population = tf.feature_column.numeric_column('population')
crime_rate = tf.feature_column.numeric_column('crime_rate')
median_education = tf.feature_column.numeric_column('median_education',
                    normalizer_fn='lambda x: x - global_education_mean')

(c)实例化相关的预创建的 Estimator。

例如,下面是对名为 LinearClassifier 的预创建 Estimator 进行实例化的示例代码:

# 实例化一个estimator,并给它传递三个特征
estimator = tf.estimator.LinearClassifier(
    feature_columns=[population, crime_rate, median_education],
    )

(d)调用训练、评估或推理方法。

例如,所有 Estimator 都提供训练模型的 train 方法。

# 传输数据,训练2000次
estimator.train(input_fn=my_training_set, steps=2000)

(2)预创建的 Estimator 的优势

预创建的 Estimator 会编码最佳做法,从而具有下列优势:

  • 确定计算图不同部分的运行位置以及在单台机器或多台机器上实现策略的最佳做法。
  • 事件(汇总)编写和普遍有用的汇总的最佳做法。

如果不使用预创建的 Estimator,则必须自行实现上述功能。

(四)推荐的工作流程

  1. 假设存在合适的预创建的 Estimator,使用它构建第一个模型并使用其结果确定基准。
  2. 使用此预创建的 Estimator 构建和测试整体管道,包括数据的完整性和可靠性。
  3. 如果存在其他合适的预创建的 Estimator,则运行实验来确定哪个预创建的 Estimator 效果最好。
  4. 可以通过构建自定义 Estimator 进一步改进模型。

(五)总 结

在这一节中,我们对tf.estimator基本情况做了介绍,从下一节开始开始,我们将对tf.estimator API每一个方法进行全面分析,有任何的问题可以在评论区留言,我会尽快回复,谢谢支持!

你可能感兴趣的:(tf.estimator,API技术手册)