*Memos:
- My post explains add().
- My post explains sub().
- My post explains mul().
- My post explains remainder().
- My post explains fmod().
div() can do division with two of the 0D or more D tensors of zero or more elements or scalars or the 0D or more D tensor of zero or more elements and a scalar, getting the 0D or more D tensor of zero or more elements as shown below:
*Memos:
-
div()
can be used with torch or a tensor. - The 1st argument(
input
) withtorch
(Type:tensor
orscalar
ofint
,float
,complex
orbool
) or using a tensor(Type:tensor
ofint
,float
,complex
orbool
)(Required). - The 2nd argument with
torch
or the 1st argument with a tensor isother
(Required-Type:tensor
orscalar
ofint
,float
,complex
orbool
). - There is
rounding_mode
argument withtorch
or a tensor(Optional-Default:None
-Type:str
): *Memos:-
None
,"trunc"
or"floor"
can be set. -
rounding_mode=
must be used. -
None
performs no rounding and, if both input and other are integer types, promotes the inputs to the default scalar type. *Equivalent to true division in Python (the/
operator) and NumPy’s np.true_divide(). -
"trunc"
rounds the results of the division towards zero. *Equivalent to C-style integer division. -
"floor"
rounds the results of the division down. *Equivalent to floor division in Python (the//
operator) and NumPy’s np.floor_divide(). - The tensor or scalar of
complex
orbool
cannot be used with"trunc"
or"floor"
. - Setting
0
(int
) toother
getsZeroDivisionError
with"trunc"
or"floor"
.
-
- There is
out
argument withtorch
(Optional-Default:None
-Type:tensor
): *Memos:-
out=
must be used. - My post explains
out
argument.
-
- divide() is the alias of
div()
. - true_divide() is the alias of
div()
withrounding_mode=None
. - floor_divide() is the same as
div()
withrounding_mode="trunc"
as long as I experimented.
import torch tensor1 = torch.tensor([9.75, 7.08, 6.26]) tensor2 = torch.tensor([[4.26, -4.54, 3.37], [-2.16, 5.43, -5.98]]) torch.div(input=tensor1, other=tensor2) tensor1.div(other=tensor2) # tensor([[2.2887, -1.5595, 1.8576], [-4.5139, 1.3039, -1.0468]]) torch.div(input=9.75, other=tensor2) # tensor([[2.2887, -2.1476, 2.8932], [-4.5139, 1.7956, -1.6304]]) torch.div(input=tensor1, other=4.26) # tensor([2.2887, 1.6620, 1.4695]) torch.div(input=9.75, other=4.26) # tensor(2.2887) torch.div(input=tensor1, other=tensor2, rounding_mode="trunc") # tensor([[2., -1., 1.], [-4., 1., -1.]]) torch.div(input=9.75, other=tensor2, rounding_mode="trunc") # tensor([[2., -2., 2.], [-4., 1., -1.]]) torch.div(input=tensor1, other=4.26, rounding_mode="trunc") # tensor([2., 1., 1.]) torch.div(input=9.75, other=4.26, rounding_mode="trunc") # tensor(2.) torch.div(input=tensor1, other=tensor2, rounding_mode="floor") # tensor([[2., -2., 1.], [-5., 1., -2.]]) torch.div(input=9.75, other=tensor2, rounding_mode="floor") # tensor([[2., -3., 2.], [-5., 1., -2.]]) torch.div(input=tensor1, other=4.26, rounding_mode="floor") # tensor([2., 1., 1.]) torch.div(input=9.75, other=4.26, rounding_mode="floor") # tensor(2.) tensor1 = torch.tensor([9, 7, 6]) tensor2 = torch.tensor([[4, -4, 3], [-2, 5, -5]]) torch.div(input=tensor1, other=tensor2) # tensor([[2.2500, -1.7500, 2.0000], [-4.5000, 1.4000, -1.2000]]) torch.div(input=9, other=tensor2) # tensor([[2.2500, -2.2500, 3.0000], [-4.5000, 1.8000, -1.8000]]) torch.div(input=tensor1, other=4) # tensor([2.2500, 1.7500, 1.5000]) torch.div(input=9, other=4) # tensor(2.2500) tensor1 = torch.tensor([9.+0.j, 7.+0.j, 6.+0.j]) tensor2 = torch.tensor([[4.+0.j, -4.+0.j, 3.+0.j], [-2.+0.j, 5.+0.j, -5.+0.j]]) torch.div(input=tensor1, other=tensor2) # tensor([[2.2500+0.j, -1.7500-0.j, 2.0000+0.j], # [-4.5000-0.j, 1.4000+0.j, -1.2000-0.j]]) torch.div(input=9.+0.j, other=tensor2) # tensor([[2.2500+0.j, -2.2500-0.j, 3.0000+0.j], # [-4.5000-0.j, 1.8000+0.j, -1.8000-0.j]]) torch.div(input=tensor1, other=4.+0.j) # tensor([2.2500+0.j, 1.7500+0.j, 1.5000+0.j]) torch.div(input=9.+0.j, other=4.+0.j) # tensor(2.2500+0.j) tensor1 = torch.tensor([True, False, True]) tensor2 = torch.tensor([[False, True, False], [True, False, True]]) torch.div(input=tensor1, other=tensor2) # tensor([[inf, 0., inf], [1., nan, 1.]]) torch.div(input=True, other=tensor2) # tensor([[inf, 1., inf], [1., inf, 1.]]) torch.div(input=tensor1, other=False) # tensor([inf, nan, inf]) torch.div(input=True, other=False) # tensor(inf)
Top comments (0)