**PyTorch** has three main different data types that can represent floating point numbers.

**torch.float32**or**torch.float****torch.float64**or**torch.double****torch.bfloat16**

In this article, we will talk about **torch.float,** and **torch.double** data type and related errors.

**What is torch.float32?**

The **torch.float32** is a **32-bit floating point number**, also known as a **“single precision”** float. It takes up less memory and is faster to perform calculations, but it may not be as accurate as a **torch.float64**.

```
import torch
# Create a float32 tensor
main_tensor = torch.randn(2, 2, dtype=torch.float32)
print(main_tensor)
```

**Output**

```
tensor([[0.5858, 1.0883],
[0.6733, 0.4548]])
```

**What is torch.float64?**

The **torch.float64** is a **64-bit floating point number**, also known as a **“double precision”** float. It takes up more memory and is slower to perform calculations, but it is more accurate than a **torch.float32**.

```
import torch
# Create a float64 tensor
main_tensor = torch.randn(2, 2, dtype=torch.float64)
print(main_tensor)
```

**Output**

```
tensor([[-0.8973, 1.3078],
[-0.9175, -1.3086]], dtype=torch.float64)
```

The **double** **data** **type** has a **64-bit floating point number.**

The **float** **data** **type** has a **32-bit floating point number**.

If you pass the **32-bit floating point number** instead of a **64-bit floating number**, it will throw a **RuntimeError**, and in this post, we will discuss the **RuntimeError** and how to fix it.

**RuntimeError: Expected object of scalar type Double but got scalar type Float**

The **RuntimeError: Expected object of scalar type Double but got scalar type Float **error in **Pytorch** occurs when a function or operation was expecting a scalar value of type double (a **64-bit floating point number**) for a tensor. But, it received a scalar value of type float (a **32-bit floating point number**) as input.

If the function or operation does not support, float, or the input was incorrectly passed as a float instead of a double.

**How to fix RuntimeError: Expected object of scalar type Double but got scalar type Float**

To **fix** the **RuntimeError: Expected object of scalar type Double but got scalar type Float** error, the input value should be cast to double, or the function should be modified to support float inputs.

To **convert** your **tensor** to **float64**, use the **torch.double()** method.

To **convert** your **tensor** to **float32**, use the **torch.float()** method.

You can also use the** .to()** method to convert the tensor to the desired data type.

```
import torch
# Create a tensor
main_tensor = torch.randn(2, 2)
double_tensor = main_tensor.double()
float_tensor = main_tensor.float()
print(main_tensor)
print(double_tensor)
print(float_tensor)
```

**Output**

```
tensor([[-1.0531, 0.6726],
[ 0.6947, -0.3040]])
tensor([[-1.0531, 0.6726],
[ 0.6947, -0.3040]], dtype=torch.float64)
tensor([[-1.0531, 0.6726],
[ 0.6947, -0.3040]])
```

You can see from the output that we converted a normal tensor to type **float32** and **float64** tensors.

When working with either **float32** or **float64** data type, ensure you are not using both simultaneously.

It is always better to use the **float64** data type for more accuracy, and if the input is in the **float32** data type, you can convert it to the **float64** data type.

I hope this solution resolves your issue!