变量值列表的 Tensorflow 特征列
Tensorflow feature column for variable list of values
从 TensorFlow 文档中可以清楚地了解如何使用 tf.feature_column.categorical_column_with_vocabulary_list
创建一个特征列,该列将一些字符串作为输入并输出一个单热向量。例如
vocabulary_feature_column =
tf.feature_column.categorical_column_with_vocabulary_list(
key="vocab_feature",
vocabulary_list=["kitchenware", "electronics", "sports"])
假设 "kitchenware"
映射到 [1,0,0]
,"electronics"
映射到 [0,1,0]
。我的问题与将 字符串列表 作为一项功能有关。例如,如果特征值为 ["kitchenware","electronics"]
,则所需的输出将为 [1,1,0]
。输入列表长度不固定,但输出维度是。
用例是一个直接的词袋类型模型(显然有一个更大的词汇表!)。
实现这个的正确方法是什么?
你应该使用 tf.feature_column.indicator_column
见 https://www.tensorflow.org/versions/master/api_docs/python/tf/feature_column/indicator_column
下面是一个如何向指标列提供数据的示例:
features = {'letter': [['A','A'], ['C','D'], ['E','F'], ['G','A'], ['X','R']]}
letter_feature = tf.feature_column.categorical_column_with_vocabulary_list(
"letter", ["A", "B", "C"], dtype=tf.string)
indicator = tf.feature_column.indicator_column(letter_feature)
tensor = tf.feature_column.input_layer(features, [indicator])
with tf.Session() as session:
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
print(session.run([tensor]))
输出:
[array([[2., 0., 0.],
[0., 0., 1.],
[0., 0., 0.],
[1., 0., 0.],
[0., 0., 0.]], dtype=float32)]
从 TensorFlow 文档中可以清楚地了解如何使用 tf.feature_column.categorical_column_with_vocabulary_list
创建一个特征列,该列将一些字符串作为输入并输出一个单热向量。例如
vocabulary_feature_column =
tf.feature_column.categorical_column_with_vocabulary_list(
key="vocab_feature",
vocabulary_list=["kitchenware", "electronics", "sports"])
假设 "kitchenware"
映射到 [1,0,0]
,"electronics"
映射到 [0,1,0]
。我的问题与将 字符串列表 作为一项功能有关。例如,如果特征值为 ["kitchenware","electronics"]
,则所需的输出将为 [1,1,0]
。输入列表长度不固定,但输出维度是。
用例是一个直接的词袋类型模型(显然有一个更大的词汇表!)。
实现这个的正确方法是什么?
你应该使用 tf.feature_column.indicator_column 见 https://www.tensorflow.org/versions/master/api_docs/python/tf/feature_column/indicator_column
下面是一个如何向指标列提供数据的示例:
features = {'letter': [['A','A'], ['C','D'], ['E','F'], ['G','A'], ['X','R']]}
letter_feature = tf.feature_column.categorical_column_with_vocabulary_list(
"letter", ["A", "B", "C"], dtype=tf.string)
indicator = tf.feature_column.indicator_column(letter_feature)
tensor = tf.feature_column.input_layer(features, [indicator])
with tf.Session() as session:
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
print(session.run([tensor]))
输出:
[array([[2., 0., 0.],
[0., 0., 1.],
[0., 0., 0.],
[1., 0., 0.],
[0., 0., 0.]], dtype=float32)]