tensorflow - 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?
谢谢你。
解决方案
做什么取决于您的模型是如何构建的。只有两个标签,您就可以进行二进制分类。如果在您的模型中,最后一个密集层有 1 个神经元,则将其设置为二进制分类。在这种情况下,您在 model.compile 中的损失函数应该是
loss=BinaryCrossentropy
在这种情况下,Model.predict 将产生单值概率输出。您可以只使用 if 语句来确定类。如果概率小于.5 则为一类,如果概率大于或等于 0.5 则为另一类。现在你可能已经构建了你的模型,其中最后一个密集层有 2 个神经元。在这种情况下,如果标签是整数,您应该使用 sparse_categorical_crossentropy;如果标签是作为损失函数的热编码,则应该使用 categorical_crossentropy。在这种情况下,Model.predict 将产生两个概率作为输出。您想选择概率最高的索引作为类。你可以用 class=np.argmax(predictions)
推荐阅读
- python - Python - 从 .PDF 文件中提取图表
- java - 安全连接 Java Socket
- regex - 如何处理 coq 证明(和其他一般 coq 问题)中的 EmptySet 正则表达式构造函数?
- visual-studio - Visual Basics-当 if 语句完成时,它似乎在重复自己并说另一个玩家赢了。这使得其他玩家的生命值减少 30 点
- javascript - 如何在javascript中杀死并重新启动递归函数
- rest - REST API - 设计一个 POST API - 如果它为同一个用户多次调用
- django - django 在这种情况下如何使用Q和过滤related_name?
- c - 来自 C 的指针从内存中删除
- goland - Goland - 从 JSON 模式生成类型定义
- laravel - Laravel 中的驼峰格式表名