sum() can get one or more sum values as shown below:
*Memos:
sum() can be used with torch or a tensor.
The tensor of zero or more integers, floating-point numbers, complex numbers or boolean values can be used.
A 0D or more D tensor can be used.
The 2nd argument(int, tuple of int or list of int) with torch or the 1st argument(int, tuple of int or list of int) with a tensor is dim(Optional) which is a dimension.
The 3rd argument(bool) with torch or the 2nd argument(bool) with a tensor is keepdim(Optional-Default:False) which keeps the dimension of the input tensor. *keepdim= must be used with dim=.
my_tensor = torch.tensor([0, 1, 2, 3])
torch.sum(my_tensor)
my_tensor.sum()
torch.sum(my_tensor, dim=0)
my_tensor.sum(dim=0)
torch.sum(my_tensor, dim=-1)
my_tensor.sum(dim=-1)
torch.sum(my_tensor, dim=(0,))
my_tensor.sum(dim=(0,))
torch.sum(my_tensor, dim=(–1,))
my_tensor.sum(dim=(–1,))
# tensor(6)
torch.sum(my_tensor, dim=0, keepdim=True)
# tensor([6])
my_tensor = torch.tensor([False, True, 2., 3+0j])
torch.sum(my_tensor)
# tensor(6.+0.j)
torch.sum(my_tensor, dim=0, keepdim=True)
# tensor([6.+0.j])
my_tensor = torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7]])
torch.sum(my_tensor)
torch.sum(my_tensor, dim=(0, 1))
torch.sum(my_tensor, dim=(0, –1))
torch.sum(my_tensor, dim=(1, 0))
torch.sum(my_tensor, dim=(1, –2))
torch.sum(my_tensor, dim=(–1, 0))
torch.sum(my_tensor, dim=(–1, –2))
torch.sum(my_tensor, dim=(–2, 1))
torch.sum(my_tensor, dim=(–2, –1))
# tensor(28)
torch.sum(my_tensor, dim=(0, 1), keepdim=True)
# tensor([[28]])
torch.sum(my_tensor, dim=0)
torch.sum(my_tensor, dim=-2)
torch.sum(my_tensor, dim=(0,))
torch.sum(my_tensor, dim=(–2,))
# tensor([4, 6, 8, 10])
torch.sum(my_tensor, dim=0, keepdim=True)
# tensor([[4, 6, 8, 10]])
torch.sum(my_tensor, dim=1)
torch.sum(my_tensor, dim=-1)
torch.sum(my_tensor, dim=(1,))
torch.sum(my_tensor, dim=(–1,))
# tensor([6, 22])
torch.sum(my_tensor, dim=1, keepdim=True)
# tensor([[6], [22]])
prod() can get one or more product values as shown below:
*Memos:
prod() can be used with torch or a tensor.
A 0D or more D tensor can be used.
The tensor of zero or more integers, floating-point numbers, complex numbers or boolean values can be used.
The 2nd argument(int) with torch or the 1st argument(int) with a tensor is dim(Optional).
The 3rd argument(bool) with torch or the 2nd argument(bool) with a tensor is keepdim(Optional-Default:False) which keeps the dimension of the input tensor. *keepdim= must be used with dim=.
my_tensor = torch.tensor([0, 1, 2, 3])
torch.prod(my_tensor)
my_tensor.prod()
torch.prod(my_tensor, dim=0)
my_tensor.prod(dim=0)
torch.prod(my_tensor, dim=-1)
my_tensor.prod(dim=-1)
# tensor(0)
torch.prod(my_tensor, dim=0, keepdim=True)
# tensor([0])
my_tensor = torch.tensor([False, True, 2., 3+0j])
torch.prod(my_tensor)
# tensor(0.+0.j)
torch.prod(my_tensor, dim=0, keepdim=True)
# tensor([[0, 5, 12, 21]])
my_tensor = torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7]])
torch.prod(my_tensor)
# tensor(0)
torch.prod(my_tensor, dim=0)
torch.prod(my_tensor, dim=-2)
# tensor([0, 5, 12, 21])
torch.prod(my_tensor, dim=1)
torch.prod(my_tensor, dim=-1)
# tensor([0, 840])
torch.prod(my_tensor, dim=0, keepdim=True)
# tensor([[0, 5, 12, 21]])
cartesian_prod() can do cartesian product with one or more 1D tensors as shown below:
*Memos:
cartesian_prod() can be used with torch but not with a tensor.
The tensor of zero or more integers, floating-point numbers, complex numbers or boolean values can be used.
The 2nd or more arguments with torch are *tensors. *Memos:
Don’t use *tensors= or tensors= with torch.
Tensors must be the same type. *A tensor can have multiple types.
my_tensor = torch.tensor([0, 1, 2, 3])
torch.cartesian_prod(my_tensor)
# tensor([0, 1, 2, 3])
my_tensor = torch.tensor([False, True, 2., 3+0j])
torch.cartesian_prod(my_tensor)
# tensor([0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j])
my_tensor1 = torch.tensor([0, 1, 2, 3])
my_tensor2 = torch.tensor([4, 5])
torch.cartesian_prod(my_tensor1, my_tensor2)
# tensor([[0, 4],
# [0, 5],
# [1, 4],
# [1, 5],
# [2, 4],
# [2, 5],
# [3, 4],
# [3, 5]])
my_tensor1 = torch.tensor([0, 1, 2, 3])
my_tensor2 = torch.tensor([4, 5])
my_tensor3 = torch.tensor([6, 7, 8])
torch.cartesian_prod(my_tensor1, my_tensor2, my_tensor3)
# tensor([[0, 4, 6],
# [0, 4, 7],
# [0, 4, 8],
# [0, 5, 6],
# [0, 5, 7],
# [0, 5, 8],
# [1, 4, 6],
# [1, 4, 7],
# [1, 4, 8],
# [1, 5, 6],
# [1, 5, 7],
# [1, 5, 8],
# [2, 4, 6],
# [2, 4, 7],
# [2, 4, 8],
# [2, 5, 6],
# [2, 5, 7],
# [2, 5, 8],
# [3, 4, 6],
# [3, 4, 7],
# [3, 4, 8],
# [3, 5, 6],
# [3, 5, 7],
# [3, 5, 8]])