【问题标题】:Tensorflow classification label 0 and 1TensorFlow 分类标签 0 和 1
【发布时间】:2021-01-23 01:07:27
【问题描述】:

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

我将标签列排列如下。

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?

谢谢。

【问题讨论】:

  • 你可以使用 preds = np.argmax(predictions , axis = 1)

标签: tensorflow label classification


【解决方案1】:

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

loss=BinaryCrossentropy

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2018-06-11
    • 2017-12-30
    • 2017-01-08
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多