【问题标题】:How to softmax two types of labels in TensorFlow如何在 TensorFlow 中对两种类型的标签进行 softmax
【发布时间】:2016-09-18 09:27:35
【问题描述】:

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) 个特征看起来是一样的。

【问题讨论】:

    标签: tensorflow softmax


    【解决方案1】:

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

    你想要边际预测。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2017-06-03
      • 2023-03-16
      相关资源
      最近更新 更多