2016-09-18 63 views
0

TensorFlow非常棒,我们已经将它用于图像分类或推荐系统。我们使用softmaxcross entropy作为损失函数。它适用于只有一种标签的情况。例如,我们只在MNIST数据集中选择0到9之间的一个数字。如何在TensorFlow中使用两种类型的标签

现在我们有了性别和年龄的特征。我们对每个示例都有一个热门编码,例如[1,0,1,0,0,0,0]。前两个标签代表性别,最后五个标签代表年龄。每个示例有两个1,其他的应该是0。

现在我们的代码看起来像这样。

logits = inference(batch_features) 
softmax = tf.nn.softmax(logits) 

但我发现它“SOFTMAX”的所有标签,并总结为2。但我想到的是前两项之和达到1和过去五年总和高达1.不知道如何实现在TensorFlow中,因为这7(2 + 5)个特征看起来是一样的。

回答

1

你有你的性别和年龄logits连接在一起。

你想要边际预测。

您需要将您的logits(tf.slice)拆分为两个数组,并分别softmax它们。

请记住,这只能给你边际概率。 它不能代表“一个老男人或一个年轻女人”,因为这不能分解。

因此,您可能需要进行联合预测。 5x2类而不是5+2类。显然,这个更强大的模型更容易出现过度装配。

如果您在每个类别中都有很多类,则可以通过将多个边际预测相加来构建联合矩阵的低阶分解的中间模型。这给Nxr+Mxr条目而不是N+MNxM

相关问题