Contents

- 1 Introduction
- 2 PyTorch Random Tensors with torch.rand()
- 3 PyTorch Random Tensors with torch.rand_like()

## Introduction

This tutorial will show you how to create Tensors with random values in PyTorch by using torch.rand() and torch.rand_like() functions. In deep learning, creating tensors there initialized with random numbers is a very common operation. We will explain these functions with the help of examples for better understanding.

**PyTorch Random Tensors with torch.rand()**

torch.rand function is used to create a tensor with the random values from the uniform distribution that lies between the interval [0,1) i.e. greater than or equal to 0 and less than 1.

Let us understand this better with the examples, but before that let us import the PyTorch library.

In [0]:

import torch;

**Example – 1: Creating 2 Dimensional Random Tensor with torch.rand()**

In the first example, we are generating a tensor of size 3×3 with random values with torch.rand function. There are three different syntaxes to do this –

**Method – 1:**

In this example, we just pass the size as 3,3 to torch.rand() as shown below.

In [1]:

tensor = torch.rand(3,3) tensor

Out[1]:

tensor([[0.6389, 0.8245, 0.2545], [0.5153, 0.2170, 0.6151], [0.3091, 0.7528, 0.5183]])

**Method – 2:**

In this method, we can pass the size as a list [3,3] to torch.rand() as shown below.

In [2]:

tensor = torch.rand(size = [3,3]) tensor

Out[2]:

tensor([[0.6389, 0.8245, 0.2545], [0.5153, 0.2170, 0.6151], [0.3091, 0.7528, 0.5183]])

In this example, we are creating a 1-D random tensor of 10 elements.

In [4]:

tensor = torch.rand(10); tensor

**Example – 3: Creating 3 Dimensional Random Tensor**

In the below example, we are creating 3-D PyTorch tensor of size 2x3x3.

In [5]:

tensor = torch.rand(size=(2,3,3)) tensor

Out[5]:

tensor([[[0.6133, 0.9458, 0.9013], [0.4031, 0.5596, 0.0875], [0.5414, 0.9022, 0.8020]], [[0.2309, 0.2696, 0.6551], [0.7222, 0.2852, 0.8607], [0.8311, 0.4471, 0.2992]]])

**Example – 4: Using dtype parameter with torch.rand**

tensor = torch.rand(size=(3,3), dtype=torch.float32) tensor

tensor([[0.3449, 0.0083, 0.6991], [0.4702, 0.8682, 0.2594], [0.1540, 0.4070, 0.5919]])

**Issue with Int data type with torch.rand() :**

tensor = torch.rand(size=(3,3), dtype=torch.int32); tensor

--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-28-9554a5ee2190> in <module>() ----> 1 tensor = torch.rand(size=(3,3), dtype=torch.int32); 2 tensor RuntimeError: "check_uniform_bounds" not implemented for 'Int'

**Example – 5: Using Seed Value with torch.rand**

Whenever you use torch.rand() function it will generate different values each time randomly. However, if you want to make sure that every time you call this function it generates the same random values then we have to pass the seed value as explained below.

We first create a generator object gen and initialize it with a seed value with manual_seed(). And then we use this generator object inside torch.rand as shown below. Now, whenever we use this block of code it will generate the tensor with the same values.

In [8]:

gen = torch.Generator() gen.manual_seed(2947587447) tensor = torch.rand(size=(4,3), generator = gen) tensor

tensor([[0.0371, 0.6312, 0.3432], [0.3925, 0.3106, 0.4346], [0.1148, 0.1085, 0.2297], [0.7899, 0.3889, 0.0603]])

**Example – 1: Creating 2 Dimensional Random Tensor with torch.rand_like()**

First, we shall create a tensor with zero values that will be used for creating the random tensor of the same size. Next, we pass the name of this tensor to torch.rand_like function.

In [9]:

reference_tensor = torch.zeros(size=(3,4)) reference_tensor

Out[9]:

tensor([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]])

tensor = torch.rand_like(reference_tensor) tensor

Out[10]:

tensor([[[0.8383, 0.9491, 0.6800, 0.6901], [0.4085, 0.5711, 0.7195, 0.0400], [0.7486, 0.7667, 0.2196, 0.8198]], [[0.7664, 0.1315, 0.7272, 0.4294], [0.7604, 0.1315, 0.7219, 0.7277], [0.5066, 0.0683, 0.4788, 0.6700]]])

Here we create a 3-D zero tensor and then use it as a reference to create random tensor.

In [11]:

reference_tensor = torch.zeros(size=(2,3,4)) reference_tensor

tensor([[[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]])

tensor = torch.rand_like(reference_tensor) tensor

Out[12]:

tensor([[[0.1704, 0.4320, 0.6740, 0.4405], [0.5392, 0.0576, 0.6135, 0.2433], [0.2174, 0.9259, 0.7687, 0.5202]], [[0.8903, 0.2329, 0.1755, 0.6491], [0.5983, 0.3904, 0.4308, 0.4082], [0.6989, 0.9511, 0.8717, 0.9099]]])

- Reference – PyTorch Documentation