TensorFlow中的二进制分类,损失和准确性出乎意料的大值

TensorFlow中的二进制分类,损失和准确性出乎意料的大值,第1张

TensorFlow中的二进制分类,损失和准确性出乎意料的大值

由此:

二进制标签值–1和+1

。。。我假设在你的价值观

train_y
test_y
实际上是-1.0到+1.0

这不能与您选择的损失函数很好地配合

sigmoid_cross_entropy_with_logits
-假定为0.0和+1.0。负值
y
会引起混乱!但是,损失函数的选择对于二进制分类是有利的。我建议将您的
y
值更改为0和1。

另外,从技术上讲,网络的输出不是最终的预测。损耗函数

sigmoid_cross_entropy_with_logits
被设计为与在输出层中具有S型传递函数的网络一起使用,尽管您已经正确地知道
在执行 此 *** 作 之前 已经应用了损耗函数。所以您的训练代码看起来正确

我不确定

tf.transpose
该如何做-我会亲自查看将其删除会如何?

output = tf.add(tf.matmul(l3, output_layer['weights']), output_layer['biases'])

无论哪种方式,这都是“
logit”输出,而不是您的预测。

output
对于非常自信的预测,的值可能会很高,这可能会在以后由于缺少S形函数而说明您的很高的值。因此,添加一个预测张量(这表示该示例处于肯定类别中的概率/置信度):

prediction = tf.sigmoid(output)

您可以使用它来计算准确性。您的准确性计算不应基于L2误差,而应基于正确值的总和-
更接近于您注释掉的代码(这似乎来自多类分类)。要对二进制分类与真/假进行比较,您需要对预测进行阈值处理,并与真标签进行比较。像这样:

 predicted_class = tf.greater(prediction,0.5) correct = tf.equal(predicted_class, tf.equal(y,1.0)) accuracy = tf.reduce_mean( tf.cast(correct, 'float') )

精度值应在0.0到1.0之间。如果要以百分比表示,请当然乘以100。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5663157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存