我所需的输出不是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的编写不同以获得较小的速度提升。

许可以下: CC-BY-SA归因
scroll top