I have a small issue that I’m struggling with, and for which I didn’t find an adequate solution.
Having two two-dimensional tensors of different shape, I want to get the maximum between each element of the first tensor and all elements of the second tensor. As an example, I define two tensors:
t1 = torch.randn(3, 4) t2 = torch.randn(5, 4)
In the code below, I illustrate that I can accomplish this task partially (via broadcasting) using only the first line of
t1. That is, each line of
t2 (which has 4 values) is compared with the first line of
t1 (which has also 4 values).
# 't1' has shape of (4,) # Output will have shape of (5, 4) torch.maximum(t1, t2)
But what I want is to generalize this concept across all
t1 lines. I tried the code below, but it doesn’t work:
# Doesn't work, but I want to get an output shape of (3, 5, 4) torch.maximum(t1, t2)
Just to be more precise, I want a vectorized version of the code below:
# 'maxs' will contain the maximum between each line of 't1' with 't2' maxs =  for line in t1: # Current maximum has shape of (5, 4) curr_max = torch.maximum(line, t2) maxs.append(curr_max) # 'maxs' will have shape of (3, 5, 4) maxs = torch.stack(maxs)