У меня есть этот огромный тензор, из которого я просто хочу сохранить выбранные тензоры.
Фон - сначала содержит прогнозируемые четырехугольники.
np.shape(coords_detached) = (15969, 8)
coords.shape() = torch.Size([15969, 8])
Второй, содержит те же координаты, но отфильтрованные после выбора с использованием NMS, для этого обсуждения просто скажу, что я выбрал 9 строк из вышеупомянутого тензора. 8 координат + 1 показатель достоверности
Но NMS делается просто, поэтому я отсоединяю тензоры.
coords_nms = torch.tensor(nms_coords_, dtype=torch.float32)
coords_nms.shape() = torch.Size([9, 9])
Так что теперь я хочу выбрать только эти 9 строк из исходного тензора, потому что он имел информацию о градиенте, которая теряется во время detach () и numpy nms.
Я пробовал это:
s = torch.ones_like(nms_coords_)
s *=-1
nms_coords = torch.where(coords == coords_nms[:,:-1], coords, s)
nms_coords = nms_coords[nms_coords>=0]
nms_coords.reshape(-1, 8)
для итерации по coords
, сопоставления со значением coords_nms
и просто их сохранения. но ему нужно такое же измерение на axis=0
Итерационный цикл будет следующим, но как это сделать, используя тензорную запись:
poo = []
for x in coords:
for z in nms_coords_:
if sum(x[:] == z[:-1]) == 8 :
poo.append(z[:-1])