我正在阅读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等的实例。
有人可以完成这个吗?
感谢您提前。
答案 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。具体来说,我真的很喜欢这张图片:
它表明,虽然分类列映射到整数,但指示符列又将其转换为单热点/多热点编码。
答案 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())
也许有更优雅的方法,但是由于(对于我们俩来说)没有其他答案,我希望这会有所帮助。