在 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_fn
。 Estimator
将在没有参数的情况下调用此函数。 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))