文章目录
本课程来自深度之眼deepshare.net,部分截图来自课程视频。
在线LaTeX公式编辑器
torch.autograd——自动求导系统
torch.autograd.backward
功能:自动求取梯度
·tensors:用于求导的张量,如y、loss
·retain_graph:保存计算图
·create_graph:创建导数计算图,用于高阶求导
·grad_tensors:多重梯度权重(就是多个需要计算多个loss的时候,计算各个loss的权重)
torch. autograd. backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False)
上节课的例子:
计算图与梯度求导:
y
=
(
x
+
w
)
∗
(
w
+
1
)
y=(x+w)*(w+1)
y=(x+w)∗(w+1)
a
=
x
+
w
a=x+w
a=x+w
b
=
w
+
1
b=w+1
b=w+1
y
=
a
∗
b
y=a*b
y=a∗b
∂
y
∂
w
=
∂
y
∂
a
∂
a
∂
w
+
∂
y
∂
b
∂
b
∂
w
=
b
∗
1
+
a
∗
1
=
b
+
a
=
(
w
+
1
)
+
(
x
+
w
)
=
2
∗
w
+
x
+
1
=
2
∗
1
+
2
+
1
=
5
\begin{aligned}\frac{\partial y}{\partial w}&=\frac{\partial y}{\partial a}\frac{\partial a}{\partial w}+\frac{\partial y}{\partial b}\frac{\partial b}{\partial w}\\ &=b*1+a*1\\ &=b+a\\ &=(w+1)+(x+w)\\ &=2*w+x+1\\ &=2*1+2+1\\&=5\end{aligned}
∂w∂y=∂a∂y∂w∂a+∂b∂y∂w∂b=b∗1+a∗1=b+a=(w+1)+(x+w)=2∗w+x+1=2∗1+2+1=5
在运行
import torch
w=torch. tensor([1.], requires grad=True)
x=torch. tensor([2.], requires_gradeTrue)
a=torch. add(w,x)# retain_grad()
b=torch. add(w,1)
y=torch. mul(a,b)
y. backward()
print(w. grad)
过程中,执行y. backward() 如果调试,会发现实际上是tensor类中调用的torch.autograd.backward方法。
如果需要多次使用计算图,需要设置retain_graph=True
torch.autograd.grad
功能:求取梯度
·outputs:用于求导的张量,如loss
·inputs:需要梯度的张量
·create_graph:创建导数计算图,用于高阶求导
·retain_graph:保存计算图
·grad_outputs:多梯度权重
if flag: x=torch.tensor([3.], requires _grad=True)
y=torch.pow(x,2)#y=x**2
grad_1=torch.autograd.grad(y,x, create_graph=True)# grad_1=dy/dx=2x=2*3=6
print(grad_1)
grad_2=torch.autograd. grad(grad_1[e],x)# grad2=d(dy/dx)/dx=d(2x)/dx=2
print(grad_2)
这里很简单,
x
2
x^2
x2求一阶导数得到2x,x=3所以结果是6
求二阶导数就是常数2。
autograd小贴士
1.梯度不自动清零,除非使用:grad.zero_()方法
2.依赖于叶子结点的结点,requires_grad默认为True,例如下图中的a和b
3.叶子结点不可执行in-place(就是在内存中改变张量的值,内存地址不变)
逻辑回归
逻辑回归是线性的二分类模型模型表达式:
y
=
f
(
W
X
+
b
)
y=f(WX+b)
y=f(WX+b)
f
(
x
)
=
1
1
+
e
−
x
f(x)=\frac{1}{1+e^{-x}}
f(x)=1+e−x1
f
(
x
)
f(x)
f(x)称为Sigmoid函数,也称为Logistic函数
c
l
a
s
s
=
{
0
,
0.5
>
y
1
,
0.5
≤
y
class=\left\{\begin{matrix}0,0.5>y \\ 1,0.5≤y \end{matrix}\right.
class={0,0.5>y1,0.5≤y
线性回归是分析自变量×与因变量y(标量)之间关系的方法
逻辑回归是分析自变量×与因变量y(概率)之间关系的方法
对数几率回归等价于逻辑回归
l
n
y
1
−
y
=
W
X
+
b
ln\frac{y}{1-y}=WX+b
ln1−yy=WX+b
y
1
−
y
=
e
W
X
+
b
\frac{y}{1-y}=e^{WX+b}
1−yy=eWX+b
y
=
e
W
X
+
b
−
y
∗
e
W
X
+
b
y=e^{WX+b}-y*e^{WX+b}
y=eWX+b−y∗eWX+b
y
(
1
+
e
W
X
+
b
)
=
e
W
X
+
b
y(1+e^{WX+b})=e^{WX+b}
y(1+eWX+b)=eWX+b
y
=
e
W
X
+
b
1
+
e
W
X
+
b
=
1
1
+
e
−
(
W
X
+
b
)
y=\frac{e^{WX+b}}{1+e^{WX+b}}=\frac{1}{1+e^{-(WX+b)}}
y=1+eWX+beWX+b=1+e−(WX+b)1