## PyTorch – count_nonzero()

PyTorch is an open-source framework for the Python programming language.

A tensor is a multidimensional array that is used to store data. So to use a tensor, we have to import the torch module.

To create a tensor the method used is tensor().

Syntax:

torch.tensor(data)

Where data is a multi-dimensional array.

## torch.count_nonzero()

torch.count_nonzero() is used to return the total number of non-zero elements present in the tensor. It takes two parameters.

Syntax:
torch.count_nonzero(tensor_object,dim)

Parameters:

1. The tensor is the input tensor.
2. dim is to reduce the dimension. dim=0 specifies column comparison, which will get the total sum of non-zeros along a column, and dim=1 specifies row comparison, which will get the total sum of non-zeros along the row.

## Example 1:

In this example, we will create a tensor with two dimensions that has two rows and two columns and apply count_nonzero() on the rows.

#let’s import torch module
import torch

#create a tensor with 2 dimensions (3 * 5)
#with random  elements using randn() function
data = torch.tensor([[0,0],[1,0]])

#display
print(data)

print()

#get count of non zeros  along rows
print(“Total number of  Non zeros across rows:”)
print(torch.count_nonzero(data, dim=1))

Output:

tensor([[0, 0],
[1, 0]])

Total number of  Non zeros across rows:
tensor([0, 1])

We can see that the total number of nonzeros in the first row is 0 and in the second row is 1.

## Example 2:

In this example, we will create a tensor with two dimensions that has two rows and two columns and apply count_nonzero() on the columns.

#let’s import torch module
import torch

#create a tensor with 2 dimensions (3 * 5)
#with random  elements using randn() function
data = torch.tensor([[0,0],[1,0]])

#display
print(data)

print()

#get count of non zeros  along columns
print(“Total number of  Non zeros across columns:”)
print(torch.count_nonzero(data, dim=0))

Output:

tensor([[0, 0],
[1, 0]])

Total number of  Non zeros across columns:
tensor([1, 0])

We can see that the total number of nonzeros in the first column is 1 and in the second column is 0.

## Work with CPU

If you want to run the count_nonzero() function on the CPU, then we have to create a tensor with a cpu() function. This will run on a CPU machine.

At this time, when we are creating a tensor, we can use the cpu() function.

Syntax:
torch.tensor(data).cpu()

## Example 1:

In this example, we will create a tensor with two dimensions on the CPU that has two rows and two columns and apply count_nonzero() on rows.

#let’s import torch module
import torch

#create a tensor with 2 dimensions (3 * 5)
#with random  elements using randn() function
data = torch.tensor([[0,0],[1,0]]).cpu()

#display
print(data)

print()

#get count of non zeros  along rows
print(«Total number of  Non zeros across rows:»)
print(torch.count_nonzero(data, dim=1))

Output:

tensor([[0, 0],
[1, 0]])

Total number of  Non zeros across rows:
tensor([0, 1])

We can see that the total number of nonzeros in the first row is 0 and in the second row is 1.

## Example 2:

In this example, we will create a tensor with 2 dimensions on the CPU that has two rows and two columns and apply count_nonzero() on the columns.

#let’s import torch module
import torch

#create a tensor with 2 dimensions (3 * 5)
#with random  elements using randn() function
data = torch.tensor([[0,0],[1,0]]).cpu()

#display
print(data)

print()

#get count of non zeros  along columns
print(«Total number of  Non zeros across columns:»)
print(torch.count_nonzero(data, dim=0))

Output:

tensor([[0, 0],
[1, 0]])

Total number of  Non zeros across columns:
tensor([1, 0])

We can see that the total number of nonzeros in the first column is 1 and in the second column is 0.

## Conclusion

In this PyTorch lesson, we discussed the count_nonzero() function. It returns the total number of non-zero elements present in the tensor. We saw different examples and worked these examples on a CPU machine.