Pytorch学习05——梯度

1、基础概念

1.1 偏微分和梯度

  • 偏微分是一个标量,而梯度是一个向量
  • 假设z = f (x,y),偏微分有z对x的偏微分和z对y的偏微分,而梯度是两者组成的向量
  • 梯度向量有方向和模,其方向为函数值增大方向,其模为增长速率

1.2 对于全局最小值搜索过程的影响因素

  • 初始状态
  • 学习率
  • 动量(怎么逃离局部极小值)

2、常见函数梯度

derivative

3、激活函数及其梯度

3.1 原始激活函数

  • “激活”:输入经过处理后小于某个值,输出为0;大于某个值,输出为固定的值。
  • 可知激活函数不可导

3.2 sigmoid / logistic

  • 解决了原来不可导问题
  • 最大特点:将(-∞,+∞)压缩到(0,1)
  • sig‘ = sig (1 - sig)
  • 缺点:当输入太大,梯度接近于0,参数得不到更新,称为梯度弥散现象

3.3 tanh

  • tanh(x) = 2sigmoid(2x) - 1
  • 值域为(-1, 1)
  • tanh’ = 1 - tanh²

3.4 ReLU

  • x<0, y=0; x>=0, y=x

4、Loss及其梯度

4.1 MSE(均方误差)

  • 暂定:loss为不开根号,norm为开根号
    使用:loss = torch.norm(y-pred, p=2).pow(2)
    注解:p=2指的是求2范数,pow(2)为平方
    torch.norm的用法

4.2 Cross Entropy Loss

  • binary
  • multi-class
  • softmax
    两个作用
    (1)将逻辑输出转换为概率,概率大小为(0,1),概率求和为1
    (2)能够加大差距,使大的更大,小的更小
    softmax
    softmax的梯度
    在这里插入图片描述
(1)p.backward()
只能用一次,不能连用两次,因为用一次之后会自动清楚求导用到的图
如果想要连用两次,设置retain_graph=True


4.3 计算梯度两种方式

1.torch.autograd.grad(loss, w)
  注:loss funciton对w的梯度
  loss function一般为向量,而在求解梯度时,参数loss只能是标量,所以每次只用到loss function的一个分量

2.fun.backward()
  w.grad
  注:fun会求出所要求的梯度并放入参数的grad成员中,可以直接用参数.grad调用

注解:要求解梯度的参数需要特别说明requires_grad=True
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值