非常教程

TensorFlow Guide参考手册

指南 | Guide

Estimators(估计量)

本文档介绍了Estimators ——一种高度简化机器学习编程的 TensorFlow API。估算人员采取以下行动:

  • 训练
  • 评测
  • 预测
  • 出口服务

您可以使用我们提供的预先制作的估算器或编写您自己的定制估算器。所有估算器 - 无论是预制还是定制 - 都是基于tf.estimator.Estimator类的类。

注意: TensorFlow 还包含一个不应使用的弃用Estimatortf.contrib.learn.Estimator

估算器的优点

估算人员提供以下好处:

  • 您可以在本地主机上或分布式多服务器环境中运行基于估算器的模型,而无需更改模型。此外,您可以 在CPU,GPU 或 TPU 上运行基于估算器的模型,而无需重新编码模型。
  • 估算器简化了模型开发人员之间的共享实现。
  • 您可以使用高级直观代码开发最先进的模型。简而言之,使用 Estimators 创建模型通常比使用低级别的 TensorFlow API 更容易。
  • 估算器本身是建立在 tf.layers 上的,它简化了定制。
  • 估算人员为您建立图表。换句话说,你不必建立图表。
  • 估算人员提供安全的分布式培训循环,控制如何以及何时:
    • 建立图表
    • 初始化变量
    • 开始排队
    • 处理异常
    • 创建检查点文件并从故障中恢复
    • 保存 TensorBoard 的摘要

使用 Estimators 编写应用程序时,必须将数据输入管道与模型分开。这种分离简化了不同数据集的实验。

预制估算器

预制估算器使您能够在比基本 TensorFlow API 更高的概念层面上工作。由于 Estimators 为您处理所有“管道”,您不必再担心创建计算图表或会话。也就是说,预先制作估计创建和管理Graph,并Session为你的对象。此外,预制的Estimators让您只需进行最少量的代码更改就可以体验不同的模型架构。DNNClassifier例如,它是一个预先制作的 Estimator 类,它通过密集的前馈神经网络来训练分类模型。

一个预先制定的估计者计划的结构

依赖预先制作的估算器的 TensorFlow 程序通常由以下四个步骤组成:

  1. 编写一个或多个数据集导入功能。例如,您可以创建一个函数来导入训练集,并创建另一个函数来导入测试集。每个数据集导入函数都必须返回两个对象:
- a dictionary in which the keys are feature names and the values are Tensors (or SparseTensors) containing the corresponding feature data
- a Tensor containing one or more labels

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

def input_fn(dataset):...#操作数据集,提取要素名称和标签返回 feature_dict,label

(有关完整的详细信息,请参阅导入数据。)

  1. 定义特征列。每个tf.feature_column标识一个功能名称,其类型和任何输入预处理。例如,以下片段创建三个保存整数或浮点数据的特征列。前两个特征列只是标识特征的名称和类型。第三个特性列还指定了 lambda 程序将调用的用于缩放原始数据:Define three numeric feature columns. 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')global_education_mean')
  2. 实例化相关的预制估算器。例如,下面是一个预先制作的估算器的示例实例,该估算器名为LinearClassifier:实例化估算器,传递特征列。estimator = tf.estimator.Estimator.LinearClassifier(feature_columns = population,crime_rate,median_education,)
  3. 调用培训,评估或推理方法。例如,所有估算器都提供了一种train方法,它训练一个模型 .my_training_set 是在步骤1 estimator.train(input_fn=my_training_set, steps=2000)

预制估算器的好处

预先制定的估算器编码最佳实践,提供以下好处:

  • 确定计算图的不同部分应在哪里运行的最佳实践,在单台计算机或群集上实施策略。
  • 事件(摘要)写作和普遍有用的摘要的最佳实践。

如果您不使用预先制定的估算器,则必须自己实施上述功能。

自定义估算器

每个估算器的核心 - 无论是预制还是定制 - 都是它的模型函数,它是一种为训练,评估和预测构建图形的方法。当您使用预先制作的估算器时,其他人已经实施了该模型功能。当依靠自定义估算器时,您必须自己编写模型函数。伴随文档解释了如何编写模型函数。

推荐工作流程

我们推荐以下工作流程:

  1. 假设存在合适的预制估算器,请使用它构建第一个模型并使用其结果建立基线。
  2. 使用此预先制作的估算器构建和测试您的整体流水线,包括数据的完整性和可靠性。
  3. 如果有合适的替代预制估算器可用,则运行实验以确定哪种预制估算器能够产生最佳结果。
  4. 可能通过构建您自己的自定义估算器来进一步改进您的模型。

从 Keras 模型创建估计器

您可以将现有的 Keras 模型转换为 Estimators。这样做可以让您的 Keras 模型访问 Estimator 的优势,例如分布式培训。请tf.keras.estimator.model_to_estimator按以下示例进行调用:

# Instantiate a Keras inception v3 model.
keras_inception_v3 = tf.keras.applications.inception_v3.InceptionV3(weights=None)
# Compile model with the optimizer, loss, and metrics you'd like to train with.
keras_inception_v3.compile(optimizer=tf.keras.optimizers.SGD(lr=0.0001, momentum=0.9),
                          loss='categorical_crossentropy',
                          metric='accuracy')
# Create an Estimator from the compiled Keras model.
est_inception_v3 = tf.keras.estimator.model_to_estimator(keras_model=keras_inception_v3)
# Treat the derived Estimator as you would any other Estimator. For example,
# the following derived Estimator calls the train method:
est_inception_v3.train(input_fn=my_training_set, steps=2000)

有关更多详细信息,请参阅tf.keras.estimator.model_to_estimator的文档。

TensorFlow Guide

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

主页 https://www.tensorflow.org/
源码 https://github.com/tensorflow/tensorflow
版本 Guide
发布版本 1.4

TensorFlow Guide目录

1.指南 | Guide
2.教程 | Tutorials
3.配置 | Deploy
4.扩展 | Extend
5.开始 | Get Started
6.表现 | Performance