0

TensorFlow 很棒,我们已将其用于图像分类或推荐系统。我们使用softmaxcross entropy作为损失函数。如果我们只有一种类型的标签,它就可以工作。例如,我们在 MNIST 数据集中仅选择 0 到 9 中的一位。

现在我们有了性别和年龄的特征。我们对每个示例都有 one-hot 编码,例如 [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) 功能似乎相同。

4

1 回答 1

1

您将性别和年龄 logits 连接在一起。

你想要边际预测。

您需要将 logits ( tf.slice) 拆分为两个数组并分别对其进行 softmax。

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

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

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

于 2016-09-18T14:36:12.840 回答