#python-3.x #opencv #image-processing #pytorch #tensor
#python-3.x #opencv #обработка изображений #pytorch #тензор
Вопрос:
У меня есть набор масок на cuda / GPU, соответствующих различным объектам на изображении (формы и размеры приведены ниже)
masks.shape: torch.Size([10, 240, 320, 1])
masks[0].shape: torch.Size([240, 320, 1])
masks[0][:,:,0].shape: torch.Size([240, 320])
1. Могу ли я выполнить объединение этих масок с помощью операции torch.tensor? чтобы я мог применить все это один раз к изображению?
2. Как мне инвертировать значения в тензоре факела? Я имею в виду, что 1 превращается в 0 и наоборот. Я пытался ~mytensor, но он говорит, что оператор применим только к целочисленным или булевым значениям. У меня есть значения с плавающей запятой в моих тензорах, т.Е. [1.] и т.д.
Я намерен выполнять все эти операции на графическом процессоре без переноса данных обратно на процессор.
Спасибо.
Комментарии:
1. 1. (torch.sum(masks, dim = 0) > 0).astype(‘float’) сделает свое дело
Ответ №1:
2. Как мне инвертировать значения в тензоре факела?
t = torch.tensor([1., 0., 0., 1., 0., 1., 1.])
Вы можете вычесть значения из 1, если не хотите менять тип
1 - t
tensor([0., 1., 1., 0., 1., 0., 0.])
Или лучше, вы можете преобразовать его в логический тип, а затем использовать ~
~t.type(torch.bool)
tensor([False, True, True, False, True, False, False])