深入浅出介绍 TensorFlow 数据集和估算器

4d2e89b3daaea8d7db56e38b15a7f6c6

TensorFlow 1.3 引入了两个重要功能,您应当尝试一下:

  • 数据集:一种创建输入管道(即,将数据读入您的程序)的全新方式。
  • 估算器:一种创建 TensorFlow 模型的高级方式。估算器包括适用于常见机器学习任务的预制模型,不过,您也可以使用它们创建自己的自定义模型。

下面是它们在 TensorFlow 架构内的装配方式。结合使用这些估算器,可以轻松地创建 TensorFlow 模型和向模型提供数据:
深入浅出介绍 TensorFlow 数据集和估算器

我们的示例模型

为了探索这些功能,我们将构建一个模型并向您显示相关的代码段。完整代码在这里,其中包括获取训练和测试文件的说明。请注意,编写的代码旨在演示数据集和估算器的工作方式,并没有为了实现最大性能而进行优化。

经过训练的模型可以根据四个植物学特征(萼片长度、萼片宽度、花瓣长度和花瓣宽度)对鸢尾花进行分类。因此,在推理期间,您可以为这四个特征提供值,模型将预测花朵属于以下三个美丽变种之中的哪一个:

深入浅出介绍 TensorFlow 数据集和估算器
从左到右依次为:山鸢尾(Radomil 摄影,CC BY-SA 3.0)、变色鸢尾(Dlanglois 摄影,CC BY-SA 3.0)和维吉尼亚鸢尾(Frank Mayfield 摄影,CC BY-SA 2.0)。
我们将使用下面的结构训练深度神经网络分类器。所有输入和输出值都是 float32,输出值的总和将等于 1(因为我们在预测属于每种鸢尾花的可能性):
深入浅出介绍 TensorFlow 数据集和估算器

例如,输出结果对山鸢尾来说可能是 0.05,对变色鸢尾是 0.9,对维吉尼亚鸢尾是 0.05,表示这种花有 90% 的可能性是变色鸢尾。
好了!我们现在已经定义模型,接下来看一看如何使用数据集和估算器训练模型和进行预测。

数据集介绍

数据集是一种为 TensorFlow 模型创建输入管道的新方式。使用此 API 的性能要比使用 feed_dict 或队列式管道的性能高得多,而且此 API 更简洁,使用起来更容易。尽管数据集在 1.3 版本中仍位于 tf.contrib.data 中,但是我们预计会在 1.4 版本中将此 API 移动到核心中,所以,是时候尝试一下了。
从高层次而言,数据集由以下类组成:
深入浅出介绍 TensorFlow 数据集和估算器
其中:

  • 数据集:基类,包含用于创建和转换数据集的函数。允许您从内存中的数据或从 Python 生成器初始化数据集。
  • TextLineDataset:从文本文件中读取各行内容。
  • TFRecordDataset:从 TFRecord 文件中读取记录。
  • FixedLengthRecordDataset:从二进制文件中读取固定大小的记录。
  • 迭代器:提供了一种一次获取一个数据集元素的方法。

我们的数据集

首先,我们来看一下要用来为模型提供数据的数据集。我们将从一个 CSV 文件读取数据,这个文件的每一行都包含五个值 – 四个输入值,加上标签:
深入浅出介绍 TensorFlow 数据集和估算器
标签的值如下所述:

  • 山鸢尾为 0
  • 变色鸢尾为 1
  • 维吉尼亚鸢尾为 2。

估算器介绍

估算器是一种高级 API,使用这种 API,您在训练 TensorFlow 模型时就不再像之前那样需要编写大量的样板文件代码。估算器也非常灵活,如果您对模型有具体的要求,它允许您替换默认行为。

使用估算器,您可以通过两种可能的方式构建模型:

  • 预制估算器 – 这些是预先定义的估算器,旨在生成特定类型的模型。在这篇博文中,我们将使用 DNNClassifier 预制估算器。
  • 估算器(基类)- 允许您使用 model_fn 函数完全掌控模型的创建方式。我们将在单独的博文中介绍如何操作。

下面是估算器的类图:
深入浅出介绍 TensorFlow 数据集和估算器

我们希望在未来版本中添加更多的预制估算器。

正如您所看到的,所有估算器都使用 input_fn,它为估算器提供输入数据。在我们的示例中,我们将重用 my_input_fn,这个函数是我们专门为演示定义的。

拓展

使用像 DNNClassifier 一样的估算器可以提供很多值。除了易于使用外,预制估算器还提供内置的评估指标,并创建您可以在 TensorBoard 中看到的汇总。要查看此报告,请按照下面所示从您的命令行启动 TensorBoard

下面几个图显示了 TensorBoard 将提供的一些数据:
深入浅出介绍 TensorFlow 数据集和估算器

总结

在这篇博文中,我们探讨了数据集和估算器。这些是用于定义输入数据流和创建模型的重要 API,因此花一些时间来学习它们非常值得!

极牛网精选文章《深入浅出介绍 TensorFlow 数据集和估算器》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/11757.html

(41)
打赏 微信公众号 微信公众号 微信小程序 微信小程序
谷歌开发者的头像谷歌开发者认证作者
上一篇 2019年12月17日 下午5:38
下一篇 2019年12月18日 下午3:42

相关推荐

发表回复

登录后才能评论
扫码关注
扫码关注
分享本页
返回顶部