函数 f ,输入的是一个 n 维向量 x = [x1,x2,...,xn]T,输出是一个标量。
函数 f 关于 x 的梯度就是一个 n 个偏导数组成的向量:
例如:
其中 x = [x1,x2,x3,x4]T,那么 y = 2(x1*x1+x2*x2+x3*x3+x4*x4);
关于 x 的偏导数求得 [4x1,4x2,4x3,4x4]T,即 4X
backward()自动求梯度
# coding: utf-8 # In[2]: from mxnet import autograd,nd # In[3]: x = nd.arange(4).reshape((4,1)) x # In[4]: x.attach_grad() # In[5]: with autograd.record(): y = 2 * nd.dot(x.T,x) # In[7]: y.backward() # In[8]: assert (x.grad - 4*x).norm().asscalar() == 0 x.grad # In[12]: x.grad