tensorflow功能列如何用于可重复的功能?

时间:2016-08-09 18:43:11

标签: tensorflow logistic-regression

我想训练一个稀疏逻辑回归来对两个类中的用户进行分类。我的一个特点是用户的兴趣是非排他性的(例如用户可能对汽车,书籍和食物感兴趣)并且数量可变:用户可能有5个兴趣,而另一个可能只有3个,与之相反Deep and Wide tutorial(年龄,教育等)中显示的示例。我想尽可能多地重用深度和宽度教程中的代码,因为最终我想扩展我的模型以获得深层组件。最简单的方法是什么?我也有兴趣将培训/评分示例的时间复杂度保持到O(active_features)

1 个答案:

答案 0 :(得分:0)

您可以为每个兴趣创建一个列(一个布尔值,表示它是否符合他们的兴趣)。如果知道所有利益,这应该有效。另一种方法是使用单热编码。

E.g. Interests are cars, books and food.
001 is cars
010 is books
100 is food
101 is food and cars
etc.

如果并非所有兴趣都已知,那么您可以将向量的大小设置为n + 1,为“其他”类别分配额外的空间。

在TensorFlow中,如果你想使用SKFlow API,你可以这样做。

x=tf.SparseTensor([[0,1],[1,0]], [1,1], [2,2])
y=tf.sparse_tensor_to_dense(x)
input_layer = tf.contrib.layers.real_valued_column('test', 2) # 2 Being the dimension of the inputs

运行此命令将提供以下内容:

sess.run(tf.contrib.layers.input_from_feature_columns(columns_to_tensors={'test':y}, feature_columns=[input_layer]))
array([[ 0.,  1.],
       [ 1.,  0.]], dtype=float32)