round(), ceil(), floor() and trunc() in PyTorch
Tags: pytorch, round, ceil, floor
Published: 2024-05-03 13:21:58

[round()](https://pytorch.org/docs/stable/generated/torch.round.html) can round the zero or more elements of a 0D or more D tensor up to 4 decimal places, getting the 0D or more D tensor of zero or more elements as shown below:

*Memos:
- round() can be used with [torch](https://pytorch.org/docs/stable/torch.html) or a tensor.
- The 1st argument with `torch` or using a tensor is `input`(Required-Type:`tensor` of `int` or `float`).
- The 2nd argument with `torch` or the 1st argument with a tensor is `decimals`(Optional-Default:`0`-Type:`int`) which is a decimal place. *You must use `decimals=`.
- There is `out` argument with `torch`(Optional-Type:`tensor`):
  *Memos:
  - `out=` must be used.
  - [My post](https://dev.to/hyperkai/set-out-with-out-argument-functions-pytorch-3ee) explains `out` argument.

```python
import torch

my_tensor = torch.tensor([4.735277, -3.370677, 1.888877, -7.888877])

torch.round(input=my_tensor)
my_tensor.round()
torch.round(input=my_tensor, decimals=0)
# tensor([5., -3., 2., -8.])

torch.round(input=my_tensor, decimals=1)
# tensor([4.7000, -3.4000, 1.9000, -7.9000])

torch.round(input=my_tensor, decimals=2)
# tensor([4.7400, -3.3700, 1.8900, -7.8900])

torch.round(input=my_tensor, decimals=3)
# tensor([4.7350, -3.3710, 1.8890, -7.8890])

torch.round(input=my_tensor, decimals=4)
torch.round(input=my_tensor, decimals=5)
torch.round(input=my_tensor, decimals=6)
etc...
# tensor([4.7353, -3.3707, 1.8889, -7.8889])

my_tensor = torch.tensor([4, -3, 1, -7])

torch.round(input=my_tensor)
# tensor([4, -3, 1, -7])
```

[ceil()](https://pytorch.org/docs/stable/generated/torch.ceil.html) can round up the zero or more elements of a 0D or more D tensor, getting the 0D or more D tensor of zero or more elements as shown below:

*Memos:
- `ceil()` can be used with `torch` or a tensor.
- The 1st argument with `torch` or using a tensor is `input`(Required-Type:`tensor` of `int` or `float`).
- There is `out` argument with `torch`(Optional-Type:`tensor`):
  *Memos:
  - `out=` must be used.
  - [My post](https://dev.to/hyperkai/set-out-with-out-argument-functions-pytorch-3ee) explains `out` argument.
- `ceil()` doesn't have `decimals` argument.

```python
import torch

my_tensor = torch.tensor([4.735277, -3.370677, 1.888877, -7.888877])

torch.ceil(input=my_tensor)
my_tensor.ceil()
# tensor([5., -3., 2., -7.])

my_tensor = torch.tensor([4, -3, 1, -7])

torch.ceil(input=my_tensor)
# tensor([4, -3, 1, -7])
```

[floor()](https://pytorch.org/docs/stable/generated/torch.floor.html) can round down the zero or more elements of a 0D or more D tensor, getting the 0D or more D tensor of zero or more elements as shown below:

*Memos:
- `floor()` can be used with `torch` or a tensor.
- The 1st argument with `torch` or using a tensor is `input`(Required-Type:`tensor` of `int` or `float`).
- There is `out` argument with `torch`(Optional-Type:`tensor`):
  *Memos:
  - `out=` must be used.
  - [My post](https://dev.to/hyperkai/set-out-with-out-argument-functions-pytorch-3ee) explains `out` argument.
- `floor()` doesn't have `decimals` argument.

```python
import torch

my_tensor = torch.tensor([4.735277, -3.370677, 1.888877, -7.888877])

torch.floor(input=my_tensor)
my_tensor.floor()
# tensor([4., -4., 1., -8.])

my_tensor = torch.tensor([4, -3, 1, -7])

torch.floor(input=my_tensor)
# tensor([4, -3, 1, -7])
```

[trunc()](https://pytorch.org/docs/stable/generated/torch.trunc.html) can truncate the decimal part of zero or more elements of a 0D or more D tensor, getting the 0D or more D tensor of zero or more elements as shown below:

*Memos:
- `trunc()` can be used with `torch` or a tensor.
- The 1st argument with `torch` or using a tensor is `input`(Required-Type:`tensor` of `int` or `float`).
- There is `out` argument with `torch`(Optional-Type:`tensor`):
  *Memos:
  - `out=` must be used.
  - [My post](https://dev.to/hyperkai/set-out-with-out-argument-functions-pytorch-3ee) explains `out` argument.
- `trunc()` doesn't have `decimals` argument.
- [fix()](https://pytorch.org/docs/stable/generated/torch.fix.html) is the alias of `trunc()`.

```python
import torch

my_tensor = torch.tensor([4.735277, -3.370677, 1.888877, -7.888877])

torch.trunc(input=my_tensor)
my_tensor.trunc()
# tensor([4., -3., 1., -7.])

my_tensor = torch.tensor([4, -3, 1, -7])

torch.trunc(input=my_tensor)
# tensor([4, -3, 1, -7])
```