Я хочу сгенерировать оценку пересечения через объединение (IoU) для модели ResNet50 (предварительно обученной). Вот моя функция для расчета оценки IoU:
def IoU(predict: torch.Tensor, target: torch.Tensor):
i = (predict & target).double().sum()
u = (predict | target).double().sum()
x = (i/u)
IoU = x.item()
return IoU
Ниже приведена функция для реализации оценки IoU:
def applyIoU(model, dataset):
IoU_score = []
for i in range(len(dataset)):
image,true_mask = dataset
x_tensor = torch.from_numpy(image).to('cpu').unsqueeze(0)
pred_mask = model.predict(x_tensor)
true_mask = torch.from_numpy(true_mask).to('cpu').unsqueeze(0)
IoU_score = IoU(pred_mask, true_mask)
assert type(true_mask) == torch.Tensor
return IoU_score
Когда я запускаю свои коды, я получаю следующую ошибку. Есть ли другой способ получить оценку IoU без использования операторов & и | в Pytorch? Спасибо
156
--> 157 i = (predict & target).double().sum()
158 u = (predict | target).double().sum()
159 x = (i/u)
RuntimeError: "bitwise_and_cpu" not implemented for 'Float
Подробнее здесь: https://stackoverflow.com/questions/694 ... -for-float