我正在尝试在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个类,我的输入是对应的...
您使用以下方法计算准确性:
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)
返回张量的第一维数