TensorFlow入门13 -- 特征列(Feature column)

参考:《深度学习图像识别技术--基于TensorFlow Object Detection API 和 OpenVINO》

预备知识:本文假设你已经读过《从数据的角度理解TensorFlow鸢尾花分类程序》系列文章,或者已经非常熟悉TensorFlow第一个入门程序:鸢尾花分类premade_estimator.py

在TensorFlow中,特征列(Feature column)是原始数据和 Estimator 之间的接口,它告诉Estimator如何使用数据。

原始数据集包含各种各样的特征,有的特征是数值,比如年龄,长度、速度;有的特征是文字,比如,地址、Email内容、数据库查询语句等

神经网络接受的输入,只能是数值,而且是整理好的数值

所以,原始数据 和 神经网络输入需求之间需要一个桥梁,这个桥梁就是特征列(Feature column)

在鸢尾花分类premade_estimator.py程序中,tf.estimator.DNNClassifier的参数 feature_columns 指定模型的输入,特征列在输入数据(由 input_fn 返回)与模型之间架起了桥梁,如下图所示:


特征列在原始数据与模型所需的数据之间架起了桥梁


创建特征列,需要调用 tf.feature_column 模块的函数。TensorFlow V1.8的特征列有八种,对应9个函数分别是:

1,数值列(tf.feature_column.numeric_column)

2,分桶列(tf.feature_column.bucketized_column)

3,分类标识列(tf.feature_column.categorical_column_with_identity)

4,分类词汇列(tf.feature_column.categorical_column_with_vocabulary_list 或者 tf.feature_column.categorical_column_with_vocabulary_file)

5,经过哈希处理的列(tf.feature_column.categorical_column_with_hash_bucket)

6,组合列(tf.feature_column.crossed_column)

7,指标列(tf.feature_column.indicator_column)

8,嵌入列(tf.feature_column.embedding_column)

如下图所示:


特征列的种类及其创建函数

将特征列传递给 Estimator的注意事项

下面的列表所示,并非所有 Estimator 都支持所有类型的 feature_columns 参数:

1,LinearClassifier 和 LinearRegressor:接受所有类型的特征列。

2,DNNClassifier 和 DNNRegressor:只接受密集列。其他类型的列必须封装在 indicator_column 或 embedding_column 中。

3,DNNLinearCombinedClassifier 和 DNNLinearCombinedRegressor:

       a). linear_feature_columns 参数接受任何特征列类型。

       b). dnn_feature_columns 参数只接受密集列。

你可能感兴趣的:(TensorFlow入门13 -- 特征列(Feature column))