分类的损失函数一次以上可以是1个输出
-
16-10-2019 - |
题
我所需的输出不是1速编码,而是像10 d向量: [1, 0, 1, 0, 1, 0, 0, 1, 1, 1]
输入就像普通的MNIST数据集。
我想使用TensorFlow来构建模型来学习这一点,然后我应该选择哪种损失功能?
解决方案
如果您的类并非相互超凡,那么您只有多个Sigmoid输出(而不是SoftMax函数,如示例MNIST分类器所示)。每个输出将是网络分配给该类成员资格的单独概率。
对于匹配的损失功能,在TensorFlow中,您可以使用内置 tf.nn.sigmoid_cross_entropy_with_logits - 请注意,它可以在逻辑上工作 - Sigmoid函数的输入 - 提高效率。该链接解释了所涉及的数学。
您仍然需要在输出层上的sigmoid函数,因为当您阅读预测时,您将上述损失函数应用于 输入 Sigmoid功能。请注意,这不是您问题的要求,您可以轻松地编写从Sigmoid输出中起作用的损失功能,只是内置的TensorFlow的编写不同以获得较小的速度提升。