lower_bounds = torch.max(set_1[:, :2].unsqueeze(1), set_2[:, :2].unsqueeze(0)) # (n1, n2, 2)
они дают вариант с unsqueeze (1) или unsqeeze (0), но не уверены, в чем разница. Скажем, исходная матрица set_1 равна
set_1-> tensor([[0.4107, 0.2199, 0.4335, 0.2874],
[0.3077, 0.1909, 0.3331, 0.2825],
[0.4166, 0.2604, 0.4296, 0.2960]], device='cuda:0')
set_2-> tensor([[-0.0368, -0.0368, 0.0632, 0.0632],
[-0.0576, -0.0576, 0.0839, 0.0839],
[-0.0576, -0.0222, 0.0839, 0.0485],
...,
[ 0.0000, 0.0000, 1.0000, 1.0000],
[ 0.0000, 0.1818, 1.0000, 0.8182],
[ 0.1818, 0.0000, 0.8182, 1.0000]], device='cuda:0') torch.Size([8732, 4])