Tensorflow功能列用于变量值列表

Gra*_*est 11 machine-learning feature-extraction neural-network tensorflow

从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"])
Run Code Online (Sandbox Code Playgroud)

让我们说"kitchenware"映射到[1,0,0]"electronics"映射到[0,1,0].我的问题与将字符串列表作为特征有关.例如,如果特征值是,["kitchenware","electronics"]那么期望的输出将是[1,1,0].输入列表长度不固定,但输出维度为.

用例是一个直的词袋类型模型(显然有一个更大的词汇表!).

实现这个的正确方法是什么?

jam*_*rta 13

以下是如何将数据提供给指标列的示例:

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]))
Run Code Online (Sandbox Code Playgroud)

哪个输出:

[array([[2., 0., 0.],
       [0., 0., 1.],
       [0., 0., 0.],
       [1., 0., 0.],
       [0., 0., 0.]], dtype=float32)]
Run Code Online (Sandbox Code Playgroud)


小智 3

您应该使用 tf.feature_column.indicator_column 请参阅https://www.tensorflow.org/versions/master/api_docs/python/tf/feature_column/indicator_column

  • 您能否举例说明在这种情况下训练数据的结构应该是什么样子?您发布的文档显示输入数据转换成的内容,而不是您提供的内容。 (6认同)