从 Keras 模型创建 Estimator

在 TensorFlow.org 上查看 在 Google Colab 中运行 在 GitHub 上查看源代码 下载笔记本

概述

TensorFlow Estimators 在 TensorFlow 中得到支持,并且可以从新的和现有的 tf.keras 模型创建。本教程包含该过程的完整最小示例。

设置

import tensorflow as tf

import numpy as np
import tensorflow_datasets as tfds

创建一个简单的 Keras 模型。

在 Keras 中,您组装来构建模型。模型(通常)是层的图形。最常见的模型类型是层堆栈:tf.keras.Sequential 模型。

要构建一个简单的全连接网络(即多层感知器)

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(16, activation='relu', input_shape=(4,)),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(3)
])

编译模型并获取摘要。

model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              optimizer='adam')
model.summary()

创建输入函数

使用 数据集 API 扩展到大型数据集或多设备训练。

评估器需要控制其输入管道何时以及如何构建。为了允许这样做,它们需要一个“输入函数”或 input_fnEstimator 将在没有参数的情况下调用此函数。 input_fn 必须返回一个 tf.data.Dataset

def input_fn():
  split = tfds.Split.TRAIN
  dataset = tfds.load('iris', split=split, as_supervised=True)
  dataset = dataset.map(lambda features, labels: ({'dense_input':features}, labels))
  dataset = dataset.batch(32).repeat()
  return dataset

测试您的 input_fn

for features_batch, labels_batch in input_fn().take(1):
  print(features_batch)
  print(labels_batch)

从 tf.keras 模型创建评估器。

一个 tf.keras.Model 可以使用 tf.estimator API 进行训练,方法是使用 tf.keras.estimator.model_to_estimator 将模型转换为 tf.estimator.Estimator 对象。

import tempfile
model_dir = tempfile.mkdtemp()
keras_estimator = tf.keras.estimator.model_to_estimator(
    keras_model=model, model_dir=model_dir)

训练和评估评估器。

keras_estimator.train(input_fn=input_fn, steps=500)
eval_result = keras_estimator.evaluate(input_fn=input_fn, steps=10)
print('Eval result: {}'.format(eval_result))