admin管理员组

文章数量:1650775

1.作用

indicator_column可用于包装任何categorical_column_*产生的向量,然后作为NN模型的input_layer的输入。

使用方式:

tf.feature_column.indicator_column(categorical_column)

输入:

categorical_column_*的输出。

输出:

可用于NN模型的input_layer的输入。

2.例子

import tensorflow as tf
sess=tf.Session()
#特征数据
features = {
    'sex': ['male', 'male', 'female', 'female', 'da'],
}
#特征列
sex_column = tf.feature_column.categorical_column_with_vocabulary_list('sex', ['male', 'female'])
# sex_column = tf.feature_column.indicator_column(sex_column)
#组合特征列
columns = [sex_column]
#输入层(数据,特征列)
inputs = tf.feature_column.input_layer(features, columns)
#初始化并运行
init = tf.global_variables_initializer()
sess.run(tf.tables_initializer())
sess.run(init)
v=sess.run(inputs)
print(v)

这个例子中,将categorical_column_with_vocabulary_list的输出,直接作为input_layer的输入时,报错:

  File "/Users/wang/anaconda3/envs/tf/lib/python2.7/site-packages/tensorflow/python/feature_column/feature_column.py", line 187, in _internal_input_layer
    'embedding_column or indicator_column. Given: {}'.format(column)) 
'embedding_column or indicator_column. Given: {}'.format(column))
ValueError: Items of feature_columns must be a _DenseColumn. You can wrap a categorical column with an embedding_column or indicator_column. Given: VocabularyListCategoricalColumn(key='sex', vocabulary_list=('male', 'female'), dtype=tf.string, default_value=-1, num_oov_buckets=0)

意思是要将 a categorical column转为denseColumn,通过embedding或者indicator column方法可以实现。

取消对indicator_column()的注释后,能得到运行后的结果:性别的三种情况的one-hot如下所示。

[[1. 0.]
 [1. 0.]
 [0. 1.]
 [0. 1.]
 [0. 0.]]

 

参考

1.官方文档:https://www.tensorflow/versions/r1.15/api_docs/python/tf/feature_column/indicator_column

2.例子:https://zhuanlan.zhihu/p/73701872

本文标签: 函数作用TFtensorflowindicatorcolumn