本文档详细介绍了特征列。您可以将特征列视为原始数据和 Estimator 之间的媒介。特征列内容丰富,使您可以将各种原始数据转换为 Estimator 可以使用的格式,从而可以轻松地进行实验。
在预创建的 Estimator 中,我们使用预创建的 Estimator (DNNClassifier
) 来训练模型,根据四个输入特征预测不同类型的鸢尾花。该示例仅创建了数值特征列(类型为
特征列是原始数据与模型之间进行链接的桥梁。一般来说,人工智能的本质是要进行权重与偏置的运算用来确定模型的形态。
在使用之前的tensorflow版本时,都需要预先将数据进行类型、分布的处理,才能被人工智能模型所使用。而特征列的出现则使得数据处理的工作变得简单的多。
特征列主要解决对用户数据进行预处理与特征化的处理,这种技术的出现主要是原始输入数据的多样性。
如下图所示,您可以通过 Estimator(鸢尾花的 DNNClassifier
)的 feature_columns
参数指定模型的输入。特征列在输入数据(由 input_fn
返回)与模型之间架起了桥梁。
在上面的例子中我们采用如下方式来定义特征列。
my_feature_columns = []
for key in train_x.keys():
my_feature_columns.append(tf.feature_column.numeric_column(key=key))
print(my_feature_columns)
其中关键语句是
tf.feature_column.numeric_column(key=key)
要创建特征列,请调用 tf.feature_column
模块的函数。本文档介绍了该模块中的九个函数。如下图所示,所有九个函数都会返回一个 Categorical-Column 或一个 Dense-Column 对象,但却不会返回 bucketized_column
,后者继承自这两个类:
tf.numeric_column
(如下所示)也是一种将具有默认数据类型 (tf.float32
) 的数值指定为模型输入的不错方式:
numeric_feature_column = tf.feature_column.numeric_column(key="SepalLength")
要指定一个非默认的数值数据类型,请使用 dtype
参数。例如:
numeric_feature_column = tf.feature_column.numeric_column(key="SepalLength",
dtype=tf.float64)
默认情况下,数值列会创建单个值(标量)。使用 shape 参数指定另一种形状。例如:
vector_feature_column = tf.feature_column.numeric_column(key="Bowling",shape=10)
matrix_feature_column = tf.feature_column.numeric_column(key="MyMatrix",shape=[10,5])
本文档详细介绍了特征列。您可以将特征列视为原始数据和 Estimator 之间的媒介。特征列内容丰富,使您可以将各种原始数据转换为 Estimator 可以使用的格式,从而可以轻松地进行实验。
在预创建的 Estimator 中,我们使用预创建的 Estimator (DNNClassifier
) 来训练模型,根据四个输入特征预测不同类型的鸢尾花。该示例仅创建了数值特征列(类型为