My impression about autograd in pytorch is When you only apply functions that support autograd, then the backward is automatically done with no extra efforts.
a = Variable(torch.randn(4,5,5,5), requires_grad=True)

# Is this ok?
a[:,:,1,1]=2

a[:,:,1,1]=2 is equivalent to a.narrow(2,1,1).narrow(3,1,1)=1.