How to Estimate the Gradient of a Function in One or More Dimensions in PyTorch?

In this article, we are going to see how to estimate the gradient of a function in one or more dimensions in PyTorch.
torch.gradient() function
torch.gradient() method estimates the gradient of a function in one or more dimensions using the second-order accurate central differences method, and the function can be defined on a real or complex domain. For controllers and optimizers, gradient estimations are quite valuable. Gradient descent is a prominent optimization method that requires an estimate of the output derivatives with respect to each input at a given location. Let’s have a look at the syntax of the given method first:
Syntax: torch.gradient(values)
Parameters:
- values(Tensor): this parameter is represents the values of the function.
Example 1
In this example, we estimate the gradient of a function for a 1D tensor.
Python3
# Import required library import torch # define the tensor tens = torch.tensor([-2., 1., -3., 4., 5.]) print(" Input tensor: ", tens) # define a function def fun(tens): return tens**2+5 # values of function values = fun(tens) # display values print(" Function Values: ", values) # estimate the gradients of fun grad = torch.gradient(values) # Display result print(" Estimated Gradients of fun() - ", grad) |
Output:
Example 2
In this example, we estimate the gradient of a function for a 2D tensor.
Python3
# Import required library import torch # define the tensor tens = torch.tensor([[-1., 3., -5.], [-4., 5., 2.], [-2., 3., 4.], ]) print("\n Input tensor: \n", tens) # define a function def fun(tens): return tens**3 # values of function values = fun(tens) # display values print("\n Function Values: \n", values) # estimate the gradients of fun in dim=0 grad_dim_0 = torch.gradient(values, dim=0) print("\n Estimated Gradients of fun() in dim=0 - \n", grad_dim_0) # estimate the gradients of fun in dim=1 grad_dim_1 = torch.gradient(values, dim=1) print("\n Estimated Gradients of fun() in dim=1 - \n", grad_dim_1) |
Output:



