TensorFlow Estimator 官方文档之----Feature column

本文详细介绍了TensorFlow Estimator中Feature Column的使用,包括数值列、分桶列、类别标识列、类别词汇表、哈希列、组合列以及指标列和嵌入列。这些特征列在将非数值数据转换为模型输入中起到关键作用,通过不同的转换方法,如one-hot编码、哈希和嵌入,帮助模型理解和学习数据的复杂结构。
摘要由CSDN通过智能技术生成

Feature column

本文档详细介绍了特征列(feature columns)。您可以将特征列视为原始数据和 Estimator 之间的媒介。特征列非常丰富,使您可以将各种原始数据转换为 Estimators 可用的格式,从而可以轻松进行实验。

在内置 Estimators 部分的教程中,我们训练了一个 tf.estimator.DNNClassifier 去完成 Iris 花的分类任务。在该例子中,我们只使用了numerical feature columns(tf.feature_column.numeric_column)类型。尽管numeric column可以有效地表示花瓣、花蕊的长度和宽度,但在实际的数据集中包含了各种特征,其中很多不是数值。
在这里插入图片描述

1. 深度神经网络的输入

深度神经网络只能处理数值类型的数据,但我们收集的特征并不全是数值类型的。以一个可包含下列三个非数值的 product_class 特征为例:

  • kitchenware
  • electronics
  • sports

机器学习模型一般将分类值表示为简单的矢量,其中 1 表示存在某个值,0 表示不存在某个值。例如,如果将product_class设置为sports时,机器学习模型通常将product_class表示为[0, 0, 1],即:

  • 0:kitchenware is absent。
  • 0:electronics is absent。
  • 1:sports is present。

因此,虽然原始数据可以是数值或分类值,但机器学习模型会将所有特征表示为数值。

2. Feature Columns

如下图所示,你可以通过 Estimator 的 feature_columns 参数来指定模型的输入。特征列在输入数据(由input_fn返回)与模型之间架起了桥梁。
在这里插入图片描述
要创建特征列,请调用 tf.feature_column 模块的函数。本文档介绍了该模块中的 9 个函数。如下图所示,除了 bucketized_column 外的函数要么返回一个 Categorical Column 对象,要么返回一个 Dense Column 对象。
在这里插入图片描述
下面我们详细介绍下这些函数。

2.1 Numeric column(数值列)

Iris 分类器对所有输入特征调用 tf.feature_column.numeric_column 函数:

  • SepalLength
  • SepalWidth
  • PetalLength
  • PetalWidth

tf.feature_column 有许多可选参数。如果不指定可选参数,将默认指定该特征列的数值类型为 tf.float32

# Defaults to a tf.float32 scalar.
numeric_feature_column = tf.feature_column.numeric_column(key="SepalLength")

可以使用dtype参数来指定数值类型。

# Represent a tf.float64 scalar.
numeric_feature_column = tf.feature_column.numeric_column(key="SepalLength",
                                                          dtype=tf.float64)

默认情况下,numeric column 只表示单个值(标量)。可以使用 shape 参数来指定形状。

# Represent a 10-element vector in which each cell contains a tf.float32.
vector_feature_column = tf.feature_column.numeric_column(key="Bowling",
                                                         shape=10)

# Represent a 10x5 matrix in which each cell contains a tf.float32.
matrix_feature_column = tf.feature_column.numeric_column(key="MyMatrix",
                                                         shape=[10,5])

2.2 Bucketized column(分桶列)

通常,我们不直接将一个数值直接传给模型,而是根据数值范围将其值分为不同的 categories。上述功能可以通过 tf.feature_column.bucketized_column 实现。以表示房屋建造年份的原始数据为例。我们并非以标量数值列表示年份,而是将年份分成下列四个分桶:
在这里插入图片描述
模型将按以下方式表示这些 bucket:

日期范围 表示为…
< 1960 年 [1, 0, 0, 0]
>= 1960 年但 < 1980 年 [0, 1, 0, 0]
>= 1980 年但 < 2000 年 [0, 0, 1, 0]
>= 2000 年 [0, 0, 0, 1]

为什么要将数字(一个完全有效的模型输入&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值