估计量的基础

    警告!

    TensorFlow Estimators在很长一段时间内没有收到TensorFlow团队的更新,因此不再推荐它。使用时可能会发现bugtfestimators使用TensorFlow的最新版本(>= 1.10)。

    概述

    TensorFlow Estimators API的基本组件包括:

    • 罐装估计器(各种模型的预构建实现)。

    • 自定义估计器(自定义模型实现)。

    • 估计器方法(核心方法,如培训()预测()evaluate ()等等,它们对所有罐装和自定义评估器的工作是一样的)。

    • 特征列(关于在建模过程中应该如何转换特征的定义)。

    • 输入函数(用于训练、评估和预测的数据来源)。

    此外,还有一些api涵盖了更高级的用法:

    • 实验(围绕处理诸如分布式训练、超参数调优等问题的估计器的包装器)

    • 运行钩子(用于记录上下文和与每个建模流程交互的回调)

    • SavedModel导出实用程序(导出经过训练的模型,以便部署到CloudML等地方)

    请阅读我们的白皮书如果您对上述部件的详细设计感兴趣。

    下面我们将列举这些组件中的一些核心功能,以提供可用功能的高级概述。有关一起使用所有组件的详细信息,请参阅链接的文章。

    估计罐头

    tfestimators包包含了用于常见机器学习任务的各种罐装估计器。目前,以下罐装估计器可用:

    估计量 描述
    linear_regressor () 线性回归量模型。
    linear_classifier () 线性分类器模型。
    dnn_regressor () 款回归。
    dnn_classifier () 款分类。
    dnn_linear_combined_regressor () 线性组合回归。
    dnn_linear_combined_classifier () 线性组合分类。

    在使用估计器之前,您需要提供一个输入函数并定义一组特征列。下面两个部分将介绍如何做到这一点。

    输入功能

    输入函数用于在训练、评估和预测过程中为估计者提供数据。R接口为各种通用R数据源提供了几个高级输入函数实现,包括:

    • 公式
    • 矩阵
    • 数据帧
    • 向量的列表

    例如,这是我们如何构造一个输入函数使用mtcars数据帧作为数据源,处理见鬼英里/加仑,变量作为特征列,和vs作为一个反应。

    输入< -input_fn(mtcars特点=c“诅咒”“英里”“我”),响应=“与”batch_size =128时代=3.

    在这种情况下,公式界面更简洁一些,对于有过使用R拟合模型经验的R用户来说应该很熟悉统计数据包中。

    输入< -input_fn(对见鬼+英里/加仑+点,data =mtcars,batch_size =128时代=3.

    还可以编写完全自定义的输入函数,从任意数据源提取数据。看到输入功能文章了解更多细节。

    功能列

    在TensorFlow中,特征列用于指定特定模型可能预期的输入的“形状”或“类型”。例如,在下面的代码中,我们定义了两个简单的特征列:一个数字列称为“诅咒”,一个指示符列称为“我”在一个炎热的表示。

    关口< -feature_columnscolumn_numeric“诅咒”),column_indicator“我”

    有各种各样的功能列可用:

    方法 描述
    column_indicator () 表示给定类别列的多热表示。
    column_numeric () 表示实值或数值特征。
    column_embedding () 创建从稀疏分类输入转换而来的密集列。
    column_bucketized () 表示离散密集输入。
    column_categorical_weighted () 将权重值应用于类别列。
    column_categorical_with_vocabulary_list () 创建具有内存词汇表的类别列。
    column_categorical_with_vocabulary_file () 使用词汇表文件创建类别列。
    column_categorical_with_identity () 创建返回标识值的类别列。
    column_categorical_with_hash_bucket () 表示稀疏特征,其中id由散列设置。

    请参阅有关功能列额外的细节。

    创建一个估计量

    下面是一个创建DNN线性组合屏蔽估计器的示例。在创建估计器时,我们传递特征列和指定模型层和体系结构的其他参数。注意,这个特定的估计器使用两组特征列—一组用于构造线性层,另一组用于完全连接的深层。

    #构建特征栏linear_feature_columns < -feature_columnscolumn_numeric“英里”))dnn_feature_columns < -feature_columnscolumn_numeric“诅咒”))#生成分类器分类器< -dnn_linear_combined_classifierlinear_feature_columns =linear_feature_columns,dnn_feature_columns =dnn_feature_columns,dnn_hidden_units =c3.3.),dnn_optimizer =“Adagrad”

    训练和预测

    然后用户可以调用培训()对初始化的Estimator进行若干步骤的训练:

    分类器% > %火车input_fn =输入,步骤=2

    一旦训练好模型,用户就可以使用了预测()它对表示推理数据源的给定输入函数进行预测。

    预测< -预测(分类器,input_fn =输入)

    用户还可以将密钥传递给predict_keys论点预测()这就产生了不同类型的预测,比如使用概率“概率”

    预测< -预测分类器,input_fn =输入,predict_keys =“概率”

    或物流:

    预测< -预测分类器,input_fn =输入,predict_keys =“物流”

    您可以通过打印找到所有可用的密钥prediction_keys ().然而,并非所有键都可以由不同类型的估计器使用。例如,回归器不能使用“概率”作为关键之一,因为概率输出只对分类模型有意义。

    模型的持久性

    创建的模型tfestimators被持久化到磁盘上。为了获得模型工件存储的位置,我们可以调用model_dir ()

    saved_model_dir < -model_dir(分类)

    然后通过将目录传递给model_dir参数,并使用它进行预测或继续训练:

    图书馆(tfestimators)linear_feature_columns < -feature_columnscolumn_numeric“英里”))dnn_feature_columns < -feature_columnscolumn_numeric“诅咒”))loaded_model < -dnn_linear_combined_classifierlinear_feature_columns =linear_feature_columns,dnn_feature_columns =dnn_feature_columns,dnn_hidden_units =c3.3.),dnn_optimizer =“Adagrad”model_dir =saved_model_dirloaded_model

    泛型方法

    有许多评估器方法可以通用地用于任何罐装或自定义评估器:

    方法 描述
    培训() 训练给定训练数据input_fn的模型。
    预测() 返回对给定特性的预测。
    evaluate () 对给定的评估数据input_fn的模型求值。
    train_and_evaluate () 训练和评估本地和分布式配置的模型。
    export_savedmodel () 将推理图作为SavedModel导出到给定的目录。