#python #image-processing #deep-learning #pytorch
Вопрос:
Я пытаюсь рассчитать оценку пересечения по объединению (долговым распискам). Вот моя реализация кода, которая отлично работает.
def IoU(predict: torch.Tensor, target: torch.Tensor):
i = (predict amp; target).float().sum()
u = (predict | target).float().sum()
x = i/u
IOU = x.item()
return IoU
Но когда я запускаю свой модульный тест:
def test_IoU1():
pred = torch.tensor([[1, 0], [1, 0]])
target = torch.tensor([[1, 0], [1, 1]])
iou = IoU(pred,target)
assert 0.66 <= iou
assert iou <= 2/3
Я получаю:
TypeError: '<=' not supported between instances of 'float' and 'function'
Как это исправить, ничего не меняя в модульном тесте? Спасибо
Ответ №1:
В этой функции
def IoU(predict: torch.Tensor, target: torch.Tensor):
i = (predict amp; target).float().sum()
u = (predict | target).float().sum()
x = i/u
IOU = x.item()
return IoU
Вы возвращаете IoU
то, что является именем функции, я полагаю, вам нужно вернуть IOU
. Так что правильным способом было бы —
def IoU(predict: torch.Tensor, target: torch.Tensor):
i = (predict amp; target).float().sum()
u = (predict | target).float().sum()
x = i/u
IOU = x.item()
return IOU