У меня эффективная проблема с некоторым тензором для l oop.
Я извлекаю функции из последнего слоя CNN через загрузчик данных изображения (я использую размер пакета 8) . Я получаю евклидово расстояние тензора партии и таблицу с предыдущими характеристиками.
Я хочу добавлять в таблицу тензор каждый раз, когда все тензоры в таблице находятся выше порога. Я реализовал успешный рабочий код, но l oop я использую его неэффективно, и мне интересно, как я могу сделать что-то подобное, используя что-то более эффективное, а не этот безопасный способ.
for i, data in enumerate(dataloader, 0):
input, label = data
input, label = input.to(device), label.to(device)
n,c h,w = input.size()
outputs = model(input)
if (i == 0):
features_list = torch.cat( (features_list, outputs[0].view(1,-1)), 0)
dist_tensores = torch.cdist(outputs, features_list, p=2.0)
activation = torch.gt(dist_tensores, AVG, out=torch.cuda.FloatTensor(len(outputs), len(features_list)))
counter = len(features_list)
activation_list = torch.sum(activation, dim=0)
for x in range(len(activation)):
if (torch.sum(activation[x], dim=0) == counter):
features_list = torch.cat( (features_list, outputs[x].view(1,-1)), 0)
Последний l oop - это часть, которую я хочу изменить, но я действительно не знаю, как назначить и добавить тензор, который мне нужен, если это не создается путем создания al oop, где я могу управлять добавляемым тензором.