Path: blob/master/site/zh-cn/lattice/tutorials/canned_estimators.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
TF Lattice Canned Estimator
概述
利用 Canned Estimator,您可以快速轻松地针对典型用例训练 TFL 模型。本指南概述了创建 TFL Canned Estimator 所需的步骤。
设置
安装 TF Lattice 软件包:
导入所需的软件包:
下载 UCI Statlog (Heart) 数据集:
设置用于在本指南中进行训练的默认值:
特征列
与任何其他 TF Estimator 一样,数据通常需要通过 input_fn 传递给 Estimator,并使用 FeatureColumns 进行解析。
TFL Canned Estimator 使用特征列的类型来决定要使用哪种类型的校准层。对于数字特征列,我们使用 tfl.layers.PWLCalibration
层;对于分类特征列,我们使用 tfl.layers.CategoricalCalibration
层。
请注意,分类特征列不是由嵌入特征列包装。它们直接馈送到 Estimator 中。
创建 input_fn
与其他任何 Estimator 一样,您可以使用 input_fn 将数据馈送给模型进行训练和评估。TFL Estimator 可以自动计算特征的分位数,并将其用作 PWL 校准层的输入关键点。为此,它们需要传递 feature_analysis_input_fn
,此函数与训练 input_fn 类似,但使用单个周期或数据的子样本。
特征配置
使用 tfl.configs.FeatureConfig
设置特征校准和按特征的配置。特征配置包括单调性约束、按特征的正则化(请参阅 tfl.configs.RegularizerConfig
)以及点阵模型的点阵大小。
如果没有为输入特征定义配置,则使用 tfl.config.FeatureConfig
中的默认配置。
校准线性模型
要构造 TFL Canned Estimator,请从 tfl.configs
构造模型配置。使用 tfl.configs.CalibratedLinearConfig
构造校准线性模型。此模型会将分段线性和分类校准应用于输入特征,随后应用线性组合和可选的输出分段线性校准。使用输出校准或指定输出边界时,线性层会将加权平均应用于校准的输入。
下面的示例将基于前 5 个特征创建一个校准线性模型。我们利用 tfl.visualization
绘制带校准器图的模型计算图。
校准点阵模型
使用 tfl.configs.CalibratedLatticeConfig
构造校准点阵模型。校准点阵模型会将分段线性和分类校准应用于输入特征,随后应用点阵模型和可选的输出分段线性校准。
下面的示例将基于前 5 个特征创建一个校准点阵模型。
校准点阵集成
当特征数量很大时,可以使用集成模型,这种模型会为特征的子集创建多个较小的点阵并计算它们的输出平均值,而不是仅创建单个巨大的点阵。使用 tfl.configs.CalibratedLatticeEnsembleConfig
构造集成点阵模型。校准点阵集成模型会将分段线性和分类校准应用于输入特征,随后应用点阵模型的集成和可选的输出分段线性校准。
随机点阵集成
以下模型配置为每个点阵使用特征的随机子集。
RTL 层随机点阵集成
以下模型配置使用 tfl.layers.RTL
层,该层为每个点阵使用特征的随机子集。我们注意到,tfl.layers.RTL
仅支持单调性约束,对于所有特征都必须具有相同的点阵大小,并且不包含按特征的正则化。请注意,与使用单独的 tfl.layers.Lattice
实例相比,使用 tfl.layers.RTL
层可使您扩展到更大的集成。
晶体点阵集成
TFL 还提供了一种称为晶体的启发式特征排列算法。晶体算法将先训练一个预拟合模型,此模型会估算成对的特征交互。然后,它将对最终集成进行排列,使具有更多非线性交互的特征处于同一点阵中。
对于晶体模型,您还需要提供用于训练上述预拟合模型的 prefitting_input_fn
。拟合模型不需要完全训练,因此几个周期便已足够。
然后,您可以通过在模型配置中设置 lattice='crystals'
来创建晶体模型。
您可以使用 tfl.visualization
模块绘制包含更多细节的特征校准器。