一、基础知识
1、torch.autograd
1)torch.autograd.backward(tensors,grad_tensors=None,retain_graph=None,create_graph=False),自动求梯度
tensors: 用于求导的张量
retain_graph : 保存计算图
create_graph : 创建导数计算图,用于高阶求导
grad_tensors:多梯度权重,当一个神经元具有多个loss时需要对不同loss的梯度进行赋权
2)torch.autograd.grad(outputs,inputs,grad_outputs=None,retain_graph=None,create_graph=False),求梯度
outputs: 用于求导的张量,如 loss
inputs : 需要梯度的张量
create_graph : 创建导数计算图,用于高阶求导
retain_graph : 保存计算图
grad_outputs:多梯度权重
2、逻辑回归
1)本质:
线性回归是分析自变量x与因变量y(标量)之间关系的方法;逻辑回归是分析自变量x与因变量y(概率)之间关系的方法
2)模型:
3)推导:
注:y/1-y,表示y为正样本的几率,哈哈自己品。
二、重点讲解
1)autograd注意事项
(1)梯度不自动清零,如果不清零梯度会累加,所以需要在每次梯度后人为清零:w.grad.zero_(),_()是原位操作,在原始地址上进行更改。
(2)依赖于叶子结点的结点,requires_grad默认为True
(3)叶子结点不可执行in-place,因为其他节点在计算梯度时需要用到叶子节点,所以叶子地址中的值不得改变否则会是其他节点求梯度时出错。所以叶子节点不能进行原位计算。
2)当运行代码画图时,plot栏常会出现空间不足而不显示最终结果,删几个就好了。