DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on

minimum(), maximum(), fmin() and fmax() in PyTorch

*Memos:

minimum() can get the zero or more minimum elements of a 0D or more D tensor prioritizing nan from two of 0D or more D tensors as shown below:

*Memos:

  • minimum() can be used with torch or a tensor.
  • The 1st argument(tensor of int, float or bool) with torch or using a tensor(tensor of int, float or bool) is input(Required).
  • The 2nd argument(tensor of int, float or bool) with torch or the 1st argument(tensor of int, float or bool) is other(Required).
  • nan is taken if there are a number and nan.
import torch

tensor1 = torch.tensor([5., float('nan'), 4., float('nan')])
tensor2 = torch.tensor([[7., 8., float('nan'), float('nan')],
                        [-9., 2., 0., -6.]])
torch.minimum(input=tensor1, other=tensor2)
tensor1.minimum(other=tensor2)
# tensor([[5., nan, nan, nan],
#         [-9., nan, 0., nan]])

tensor1 = torch.tensor(5.)
tensor2 = torch.tensor([[[7., 8.], [float('nan'), float('nan')]],
                        [[-9., 2.], [0., -6.]]])
torch.minimum(input=tensor1, other=tensor2)
# tensor([[[5., 5.], [nan, nan]],
#         [[-9., 2.], [0., -6.]]])

tensor1 = torch.tensor(5)
tensor2 = torch.tensor([[[7, 8], [-5, -1]],
                        [[-9, 2], [0, -6]]])
torch.minimum(input=tensor1, other=tensor2)
# tensor([[[5, 5], [-5, -1]],
#         [[-9, 2], [0, -6]]])

tensor1 = torch.tensor(True)
tensor2 = torch.tensor([[[True, False], [True, False]],
                        [[False, True], [False, True]]])
torch.minimum(input=tensor1, other=tensor2)
# tensor([[[True, False], [True, False]],
#         [[False, True], [False, True]]])
Enter fullscreen mode Exit fullscreen mode

maximum() can get the zero or more maximum elements of a 0D or more D tensor prioritizing nan from two of 0D or more D tensors as shown below:

*Memos:

  • maximum() can be used with torch or a tensor.
  • The 1st argument(tensor of int, float or bool) with torch or using a tensor(tensor of int, float or bool) is input(Required).
  • The 2nd argument(tensor of int, float or bool) with torch or the 1st argument(tensor of int, float or bool) is other(Required).
  • nan is taken if there are a number and nan.
import torch

tensor1 = torch.tensor([5., float('nan'), 4., float('nan')])
tensor2 = torch.tensor([[7., 8., float('nan'), float('nan')],
                        [-9., 2., 0., -6.]])
torch.maximum(input=tensor1, other=tensor2)
tensor1.maximum(other=tensor2)
# tensor([[7., nan, nan, nan],
#         [5., nan, 4., nan]])

tensor1 = torch.tensor(5.)
tensor2 = torch.tensor([[[7., 8.], [float('nan'), float('nan')]],
                        [[-9., 2.], [0., -6.]]])
torch.maximum(input=tensor1, other=tensor2)
# tensor([[[7., 8.], [nan, nan]],
#         [[5., 5.], [5., 5.]]])

tensor1 = torch.tensor(5)
tensor2 = torch.tensor([[[7, 8], [-5, -1]],
                        [[-9, 2], [0, -6]]])
torch.maximum(input=tensor1, other=tensor2)
# tensor([[[7, 8], [5, 5]],
#         [[5, 5], [5, 5]]])

tensor1 = torch.tensor(True)
tensor2 = torch.tensor([[[True, False], [True, False]],
                        [[False, True], [False, True]]])
torch.maximum(input=tensor1, other=tensor2)
# tensor([[[True, True], [True, True]],
#         [[True, True], [True, True]]])
Enter fullscreen mode Exit fullscreen mode

fmin() can get the zero or more minimum elements of a 0D or more D tensor not prioritizing nan from two of 0D or more D tensors as shown below:

*Memos:

  • fmin() can be used with torch or a tensor.
  • The 1st argument(tensor of int, float or bool) with torch or using a tensor(tensor of int, float or bool) is input(Required).
  • The 2nd argument(tensor of int, float or bool) with torch or the 1st argument(tensor of int, float or bool) is other(Required).
  • A number is taken if there are a number and nan.
import torch

tensor1 = torch.tensor([5., float('nan'), 4., float('nan')])
tensor2 = torch.tensor([[7., 8., float('nan'), float('nan')],
                        [-9., 2., 0., -6.]])
torch.fmin(input=tensor1, other=tensor2)
tensor1.fmin(other=tensor2)
# tensor([[5., 8., 4., nan],
#         [-9., 2., 0., -6.]])

tensor1 = torch.tensor(5.)
tensor2 = torch.tensor([[[7., 8.], [float('nan'), float('nan')]],
                        [[-9., 2.], [0., -6.]]])
torch.fmin(input=tensor1, other=tensor2)
# tensor([[[5., 5.], [5., 5.]],
#         [[-9., 2.], [0., -6.]]])

tensor1 = torch.tensor(5)
tensor2 = torch.tensor([[[7, 8], [-5, -1]],
                        [[-9, 2], [0, -6]]])
torch.fmin(input=tensor1, other=tensor2)
# tensor([[[5, 5], [-5, -1]],
#         [[-9, 2], [0, -6]]])

tensor1 = torch.tensor(True)
tensor2 = torch.tensor([[[True, False], [True, False]],
                        [[False, True], [False, True]]])
torch.fmin(input=tensor1, other=tensor2)
# tensor([[[True, False], [True, False]],
#         [[False, True], [False, True]]])
Enter fullscreen mode Exit fullscreen mode

fmax() can get the zero or more maximum elements of a 0D or more D tensor not prioritizing nan from two of 0D or more D tensors as shown below:

*Memos:

  • fmax() can be used with torch or a tensor.
  • The 1st argument(tensor of int, float or bool) with torch or using a tensor(tensor of int, float or bool) is input(Required).
  • The 2nd argument(tensor of int, float or bool) with torch or the 1st argument(tensor of int, float or bool) is other(Required).
  • A number is taken if there are a number and nan.
import torch

tensor1 = torch.tensor([5., float('nan'), 4., float('nan')])
tensor2 = torch.tensor([[7., 8., float('nan'), float('nan')],
                        [-9., 2., 0., -6.]])
torch.fmax(input=tensor1, other=tensor2)
tensor1.fmax(other=tensor2)
# tensor([[7., 8., 4., nan],
#         [5., 2., 4., -6.]])

tensor1 = torch.tensor(5.)
tensor2 = torch.tensor([[[7., 8.], [float('nan'), float('nan')]],
                        [[-9., 2.], [0., -6.]]])
torch.fmax(input=tensor1, other=tensor2)
# tensor([[[7., 8.], [5., 5.]],
#         [[5., 5.], [5., 5.]]])

tensor1 = torch.tensor(5)
tensor2 = torch.tensor([[[7, 8], [-5, -1]],
                        [[-9, 2], [0, -6]]])
torch.fmax(input=tensor1, other=tensor2)
# tensor([[[7, 8], [5, 5]],
#         [[5, 5], [5, 5]]])

tensor1 = torch.tensor(True)
tensor2 = torch.tensor([[[True, False], [True, False]],
                        [[False, True], [False, True]]])
torch.fmax(input=tensor1, other=tensor2)
# tensor([[[True, True], [True, True]],
#         [[True, True], [True, True]]])
Enter fullscreen mode Exit fullscreen mode

Top comments (0)