DEV Community

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

Posted on • Edited on

min and max in PyTorch

Buy Me a Coffee

*Memos:

min() can get the 0D of the 1st one minimum element or two of the 0D or more D tensors of the 1st zero or more minimum elements and their indices from the one or two 0D or more D tensors of zero or more elements as shown below:

*Memos:

  • min() can be used with torch or a tensor.
  • The 1st argument(input) with torch or using a tensor(Required-Type:tensor of int, float or bool).
  • The 2nd argument with torch or the 1st argument is dim(Optional-Type:int). *Setting dim can get zero or more 1st minimum elements and their indices.
  • The 2nd argument with torch or the 1st argument is other(Optional-Type:tensor of int, float or bool): *Memos:
    • It can only be used with input.
    • This is the functionality of minimum().
  • The 3rd argument with torch or the 2nd argument is keepdim(Optional-Default:False-Type:bool): *Memos:
    • It must be used with dim and without other.
    • My post explains keepdim argument.
  • There is out argument with torch(Optional-Default:None-Type:tensor, tuple(tensor, tensor) or list(tensor, tensor)): *Memos:
    • The type of tensor must be used without dim and keepdim.
    • The type of tuple(tensor, tensor) or list(tensor, tensor) must be used with dim and without other.
    • out= must be used.
    • My post explains out argument.
  • The empty 2D or more D tensor without other tensor doesn't work if not setting dim.
  • The empty 1D tensor without other tensor doesn't work even if setting dim.
import torch

my_tensor = torch.tensor([[5, 4, 7, 7],
                          [6, 5, 3, 5],
                          [3, 8, 9, 3]])
torch.min(input=my_tensor)
my_tensor.min()
# tensor(3)

torch.min(input=my_tensor, dim=0)
torch.min(input=my_tensor, dim=-2)
# torch.return_types.min(
# values=tensor([3, 4, 3, 3]),
# indices=tensor([2, 0, 1, 2]))

torch.min(input=my_tensor, dim=1)
torch.min(input=my_tensor, dim=-1)
# torch.return_types.min(
# values=tensor([4, 3, 3]),
# indices=tensor([1, 2, 0]))

tensor1 = torch.tensor([5, 4, 7, 7])
tensor2 = torch.tensor([[6, 5, 3, 5],
                        [3, 8, 9, 3]])
torch.min(input=tensor1, other=tensor2)
# tensor([[5, 4, 3, 5],
#         [3, 4, 7, 3]])

tensor1 = torch.tensor([5., 4., 7., 7.])
tensor2 = torch.tensor([[6., 5., 3., 5.],
                        [3., 8., 9., 3.]])
torch.min(input=tensor1, other=tensor2)
# tensor([[5., 4., 3., 5.],
#         [3., 4., 7., 3.]])

tensor1 = torch.tensor([True, False, True, False])
tensor2 = torch.tensor([[True, False, True, False],
                        [False, True, False, True]])
torch.min(input=tensor1, other=tensor2)
# tensor([[True, False, True, False],
#         [False, False, False, False]])

my_tensor = torch.tensor([])
my_tensor = torch.tensor([[]])
my_tensor = torch.tensor([[[]]])

torch.min(input=my_tensor) # Error

my_tensor = torch.tensor([])

torch.min(input=my_tensor, dim=0) # Error

my_tensor = torch.tensor([[]])

torch.min(input=my_tensor, dim=0)
# torch.return_types.min(
# values=tensor([]),
# indices=tensor([], dtype=torch.int64))

my_tensor = torch.tensor([[[]]])

torch.min(input=my_tensor, dim=0)
# torch.return_types.min(
# values=tensor([], size=(1, 0)),
# indices=tensor([], size=(1, 0), dtype=torch.int64))
Enter fullscreen mode Exit fullscreen mode

max() can get the 0D of the 1st one maximum element or two of the 0D or more D tensors of the 1st zero or more maximum elements and their indices from the one or two 0D or more D tensors of zero or more elements as shown below:

  • max() can be used with torch or a tensor.
  • The 1st argument(input) with torch or using a tensor(Required-Type:tensor of int, float or bool).
  • The 2nd argument with torch or the 1st argument is dim(Optional-Type:int). *Setting dim can get zero or more 1st maximum elements and their indices.
  • The 2nd argument with torch or the 1st argument is other(Optional-Type:tensor of int, float or bool): *Memos:
    • It can only be used with input.
    • This is the functionality of maximum().
  • The 3rd argument with torch or the 2nd argument is keepdim(Optional-Default:False-Type:bool): *Memos:
    • It must be used with dim and without other.
    • My post explains keepdim argument.
  • There is out argument with torch(Optional-Default:None-Type:tensor, tuple(tensor, tensor) or list(tensor, tensor)): *Memos:
    • The type of tensor must be used without dim and keepdim.
    • The type of tuple(tensor, tensor) or list(tensor, tensor) must be used with dim and without other.
    • out= must be used.
    • My post explains out argument.
  • The empty 2D or more D tensor without other tensor doesn't work if not setting dim.
  • The empty 1D input tesnor or tensor without other tensor doesn't work even if setting dim.
import torch

my_tensor = torch.tensor([[5, 4, 7, 7],
                          [6, 5, 3, 5],
                          [3, 8, 9, 3]])
torch.max(input=my_tensor)
my_tensor.max()
# tensor(9)

torch.max(input=my_tensor, dim=0)
torch.max(input=my_tensor, dim=-2)
# torch.return_types.max(
# values=tensor([6, 8, 9, 7]),
# indices=tensor([1, 2, 2, 0]))

torch.max(input=my_tensor, dim=1)
torch.max(input=my_tensor, dim=-1)
# torch.return_types.max(
# values=tensor([7, 6, 9]),
# indices=tensor([2, 0, 2]))

tensor1 = torch.tensor([5, 4, 7, 7])
tensor2 = torch.tensor([[6, 5, 3, 5],
                        [3, 8, 9, 3]])
torch.max(input=tensor1, other=tensor2)
# tensor([[6, 5, 7, 7],
#         [5, 8, 9, 7]])

tensor1 = torch.tensor([5., 4., 7., 7.])
tensor2 = torch.tensor([[6., 5., 3., 5.],
                        [3., 8., 9., 3.]])
torch.max(input=tensor1, other=tensor2)
# tensor([[6., 5., 7., 7.],
#         [5., 8., 9., 7.]])

tensor1 = torch.tensor([True, False, True, False])
tensor2 = torch.tensor([[True, False, True, False],
                        [False, True, False, True]])
torch.max(input=tensor1, other=tensor2)
# tensor([[True, False, True, False],
#         [True, True, True, True]])

my_tensor = torch.tensor([])
my_tensor = torch.tensor([[]])
my_tensor = torch.tensor([[[]]])

torch.max(input=my_tensor) # Error

my_tensor = torch.tensor([])

torch.max(input=my_tensor, dim=0) # Error

my_tensor = torch.tensor([[]])

torch.max(input=my_tensor, dim=0)
# torch.return_types.max(
# values=tensor([]),
# indices=tensor([], dtype=torch.int64))

my_tensor = torch.tensor([[[]]])

torch.max(input=my_tensor, dim=0)
# torch.return_types.max(
# values=tensor([], size=(1, 0)),
# indices=tensor([], size=(1, 0), dtype=torch.int64))
Enter fullscreen mode Exit fullscreen mode

Top comments (0)