I have this huge tensor from which I just want to keep selected tensors.
Background - first contains coordinates of quadrilaterals being predicted.
np.shape(coords_detached) = (15969, 8)
coords.shape() = torch.Size([15969, 8])
Second contains same coordinates but filtered after selection using NMS, for this discussion just say I select 9 rows from above tensor. 8 coordinates + 1 confidence score
But NMS is being done in numpy so I detach the tensors.
coords_nms = torch.tensor(nms_coords_, dtype=torch.float32)
coords_nms.shape() = torch.Size([9, 9])
So now I want to select just these 9 rows from the original tensor, coz it had the gradient information that gets lost during detach() and numpy nms.
I tried this :
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)
to iterate through coords and match value coords_nms and just store those. but it needds same dimension at axis=0
The iterative loop would be the following but how to do it using tensor notation :
poo = []
for x in coords:
for z in nms_coords_:
if sum(x[:] == z[:-1]) == 8 :
poo.append(z[:-1])