Я делаю семантическую сегментацию, используя набор данных cityscapes в fastai. Я хочу игнорировать некоторые классы при расчете точности. Вот как я определил точность в соответствии с курсом глубокого обучения fastai:
name2id = {v:k for k,v in enumerate(classes)}
unlabeled = name2id['unlabeled']
ego_v = name2id['ego vehicle']
rectification = name2id['rectification border']
roi = name2id['out of roi']
static = name2id['static']
dynamic = name2id['dynamic']
ground = name2id['ground']
def acc_cityscapes(input, target):
target = target.squeeze(1)
mask=(target!=unlabeled and target!= ego_v and target!= rectification
and target!=roi and target !=static and target!=dynamic and
target!=ground)
return (input.argmax(dim=1)[mask]==target[mask]).float().mean()
Этот код работает, если я игнорирую только один из классов:
mask=target!=unlabeled
Но когда я пытаюсь игнорироватьнесколько классов, как это:
mask=(target!=unlabeled and target!= ego_v and target!= rectification
and target!=roi and target !=static and target!=dynamic and
target!=ground)
Я получаю эту ошибку:
runtimeError: bool value of tensor with more than one value is ambiguous
Любая идея, как мне решить эту проблему?