gpt4 book ai didi

python - 如何正确使用Tensorflow MeanIOU指标?

转载 作者:行者123 更新时间:2023-12-03 15:48:37 32 4
gpt4 key购买 nike

我想在keras(doc link)中使用MeanIoU指标。但是我不太了解如何将它与keras api集成在一起。在该示例中,预测和基本事实以二进制值给出,但是使用keras时,我们应该获得概率,尤其是因为损失很大。
我们应该有这样的东西:

m = tf.keras.metrics.MeanIoU(num_classes=2)
m.update_state([0, 0, 1, 1], [0.3, 0.6, 0.2, 0.9])

但是现在结果不一样了,我们有:
# <tf.Variable 'UnreadVariable' shape=(2, 2) dtype=float64, numpy=array([[2., 0.],
# [2., 0.]])>
m.result().numpy() # 0.25

所以我的问题是,如果模型的输出是概率,我们应该如何使用该指标?二进制甚至是多类设置(一个热点)?

对于精度,BinaryAccuracy和CategoricalAccuracy之间存在区别,它们都采用 y_pred的概率。对于MeanIoU来说应该不一样吗?

最佳答案

我有类似的问题。尽管在网上查找示例,但所有演示都在将argmax应用于模型的输出后进行。

我现在的解决方法是将tf.keras.metrics.MeanIoU子类化:

class MyMeanIOU(tf.keras.metrics.MeanIoU):
def update_state(self, y_true, y_pred, sample_weight=None):
return super().update_state(tf.argmax(y_true, axis=-1), tf.argmax(y_pred, axis=-1), sample_weight)

也可以创建自己的函数,但是如果希望从分布式策略等额外功能中受益,建议对 tf.keras.metrics.Metric进行子类化。

我仍在寻找更清洁的解决方案。

关于python - 如何正确使用Tensorflow MeanIOU指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60507120/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com