首页 > 解决方案 > TensorFlow 分类标签 0 和 1

问题描述

我正在研究一个简单的分类问题。我继续阅读示例并创建了一个模型。

我排列了标签列,如下所示。

label 0 1 1 0 0 1 因此,我想用样本测试系统。但它确实以百分比计算。

我希望它给出 2 个正确的值,0 或 1。

示例代码;

input_dict = {name: tf.convert_to_tensor([value]) for name, value in sample.items()}
predictions = reloaded_model.predict(input_dict)
prob = tf.nn.sigmoid(predictions[0])

print(
    "This particular pet had a %.1f percent probability "
    "of getting adopted." % (100 * prob)
)

什么代码会产生 0 和 1?

谢谢你。

标签: tensorflowlabelclassification

解决方案


做什么取决于您的模型是如何构建的。只有两个标签,您就可以进行二进制分类。如果在您的模型中,最后一个密集层有 1 个神经元,则将其设置为二进制分类。在这种情况下,您在 model.compile 中的损失函数应该是

loss=BinaryCrossentropy

在这种情况下,Model.predict 将产生单值概率输出。您可以只使用 if 语句来确定类。如果概率小于.5 则为一类,如果概率大于或等于 0.5 则为另一类。现在你可能已经构建了你的模型,其中最后一个密集层有 2 个神经元。在这种情况下,如果标签是整数,您应该使用 sparse_categorical_crossentropy;如果标签是作为损失函数的热编码,则应该使用 categorical_crossentropy。在这种情况下,Model.predict 将产生两个概率作为输出。您想选择概率最高的索引作为类。你可以用 class=np.argmax(predictions)


推荐阅读