tf.feature_column.indicator_column的示例

时间:2018-04-02 04:32:04

标签: tensorflow

我正在阅读tensorflow关于tf.feature_column.indicator_column的文档。

在本文档中,有一个例子。

name = indicator_column(categorical_column_with_vocabulary_list(
       'name', ['bob', 'george', 'wanda'])
columns = [name, ...]
features = tf.parse_example(..., features=make_parse_example_spec(columns))
dense_tensor = input_layer(features, columns)

dense_tensor == [[1, 0, 0]]  # If "name" bytes_list is ["bob"]
dense_tensor == [[1, 0, 1]]  # If "name" bytes_list is ["bob", "wanda"]
dense_tensor == [[2, 0, 0]]  # If "name" bytes_list is ["bob", "bob”]

我的问题是此代码的省略(...)部分。我只想要一个完整,运行,简单的例子。我找不到一个包括tf.Example等的实例。

有人可以完成这个吗?

感谢您提前。

2 个答案:

答案 0 :(得分:1)

我希望这是一种可视化的简便方法。虽然它不能完成您问题中的(...),但我认为它们说明了如何使用tf.feature_column.indicator_column

import tensorflow as tf

colors_column = tf.feature_column.indicator_column(tf.feature_column.categorical_column_with_vocabulary_list(
    key='color',
    vocabulary_list=["Green", "Red", "Blue", "Yellow"]
))


input_layer = tf.feature_column.input_layer(
    features={'color': tf.constant(value="Red", dtype=tf.string, shape=(1,))},
    feature_columns=[colors_column])


with tf.Session() as sess:
    sess.run(tf.initialize_all_tables())
    print(sess.run(input_layer))

了解更多:

我强烈建议您阅读this。具体来说,我真的很喜欢这张图片:

enter image description here

它表明,虽然分类列映射到整数,但指示符列又将其转换为单热点/多热点编码。

答案 1 :(得分:0)

我自己正在努力处理TF文档。 我相信第一个省略号只是表明一个人可能会比这个单独的列还要多。但是对于“ parse_example”方法,需要第二个输入参数(“序列化”)(因为您可能已经发现自己了。)

以下代码对我有用,并返回评估文档中所述的值:

import tensorflow as tf

name = tf.feature_column.indicator_column(tf.feature_column.categorical_column_with_vocabulary_list(
'name', ['bob', 'george', 'wanda']))
columns = [name]

feature_dict = {'name': tf.train.Feature(bytes_list=tf.train.BytesList(value=['bob', 'wanda']))}
example = tf.train.Example(features=tf.train.Features(feature=feature_dict))

tf_example = tf.parse_example(serialized=[example.SerializeToString()], 
                           features=tf.feature_column.make_parse_example_spec(columns))
dense_tensor = tf.feature_column.input_layer(tf_example, columns)

sess = tf.InteractiveSession()
tf.tables_initializer().run()

print(dense_tensor.eval())

也许有更优雅的方法,但是由于(对于我们俩来说)没有其他答案,我希望这会有所帮助。