1.标量对向量的求导
- y = 2 x T x y=2x^Tx y=2xTx关于 向量的 x 求导
- 输入:
x = torch.arange(4.0,requires_grad=True) #创建向量x,并且令 x 保存导数
y = 2*torch.dot(x,x) # y=2x^Tx
y.backward() # 反向求导y,即求出 y 关于 x 的导数并令 x为你定义的值(x=0,1,2,3)
x.grad # 求出导数
x.grad == 4*x # 判断导数是否为 (y'=4x);
- 输出
tensor([True, True, True, True]) # 正确 y'=4x
- 输入:
x.grad # y'=4x=[0*4=0,1*4=4,2*4=8,3*4=12]
- 输出
tensor([ 0., 4., 8., 12.])
- 输入
4*x
- 输出
tensor([ 0., 4., 8., 12.], grad_fn=<MulBackward0>)
- 输入
y # y=2x_0^2+2x_1^2+2x_2^2+2x_3^2=28,此时 y 为标量
- 输出
tensor(28., grad_fn=<MulBackward0>)
- 输入
y = x.sum() # 在pytorch里面,目前来说都是标量对向量的求导,所以用 y.sum()
y.backward()
x.grad
- 输出
tensor([1., 1., 1., 1.])
- 输入
x.grad.zero_()
y = x*x
y.sum().backward() # 在pytorch里面,目前来说都是标量对向量的求导,所以用 y.sum()
x.grad
- 输出
tensor([0., 2., 4., 6.])
2. %matplotlib inline的含义
- 输入
%matplotlib inline
用在Jupyter notebook中具体作用是当调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。