Pytorch-计算精度UNet多类细分

问题描述 投票:0回答:2

我正在尝试在pytorch的UNet模型上运行以进行多类图像分割。我发现在线模型的体系结构显然可以正常工作……我有100个类,我的输入对应于张量大小[8、3、32、32],我的标签是[8、32、32],并且预期我的输出是[8,100,32,32]。

我想为每次迭代计算精度,所以我遵循以下代码来计算精度:

def multi_acc(pred, label):
    probs = torch.log_softmax(pred, dim = 1)
    _, tags = torch.max(probs, dim = 1)
    corrects = (tags == label).float()
    acc = corrects.sum()/len(corrects)
    acc = torch.round(acc)*100
    return acc

但是当我进行培训时,我得到的准确度总是与:]相同。

 Epoch : [2] [1/38311] Loss : 0.3168763518333435
 Acc: 102400.0
 Epoch : [2] [2/38311] Loss : 0.31527179479599
 Acc: 102400.0
 Epoch : [2] [3/38311] Loss : 0.2920961081981659
 Acc: 102400.0

而且它继续这样下去...如果有人有一个更好地理解的想法,那就太好了!

感谢您的回答。

我正在尝试在pytorch的UNet模型上运行以进行多类图像分割。我发现在线模型的体系结构显然可以正常工作...我有100个类,我的输入是对应的...

python pytorch metrics image-segmentation unity3d-unet
2个回答
0
投票

您使用以下方法计算准确性:


0
投票

def multi_acc(pred, label): _, tags = torch.max(pred, dim = 1) corrects = (tags == label).float() acc = corrects.sum() / corrects.numel() acc = acc * 100 return acc 是3维数组(批处理,宽度,高度)或类似的东西。当您调用corrects时,acc = corrects.sum() / len(corrects)返回张量的第一维数

© www.soinside.com 2019 - 2024. All rights reserved.