library(torch)

# creates example tensors. x requires_grad = TRUE tells that 
# we are going to take derivatives over it.
x <- torch_tensor(3, requires_grad = TRUE)
y <- torch_tensor(2)

# executes the forward operation x^2
o <- x^2

# computes the backward operation for each tensor that is marked with
# requires_grad = TRUE
o$backward()

# get do/dx = 2 * x (at x = 3)
x$grad
## torch_tensor
##  6
## [ CPUFloatType{1} ]