【深度学习技术】python 反向传播求梯度

反向传播

这里写图片描述

当有激活函数的时候传播的方式如下:

这里写图片描述

复合表达式、链式法则、反向传播

链式法则:将偏导数相乘。

对于一个符合表达式:

这里写图片描述

# -*- coding: utf-8 -*-
"""
Created on Fri Dec 23 17:24:24 2016

@author: CrazyVertigo
"""

import math

x = 3 # 例子数值
y = -4 # 前向传播 
sigy = 1.0 / (1 + math.exp(-y)) # 分子中的sigmoi          #(1) 
num = x + sigy # 分子                                    #(2)
sigx = 1.0 / (1 + math.exp(-x)) # 分母中的sigmoid         #(3) 
xpy = x + y #(4) 
xpysqr = xpy**2 #(5) 
den = sigx + xpysqr # 分母                                #(6) 
invden = 1.0 / den #(7) f = num * invden # 搞定!  #(8)


# 回传 f = num * invden 
dnum = invden # 分子的梯度                                     #(8) 
dinvden = num #(8) # 回传 
invden = 1.0 / den 
dden = (-1.0 / (den**2)) * dinvden #(7) 
# 回传 den = sigx + xpysqr 
dsigx = (1) * dden #(6) 
dxpysqr = (1) * dden #(6) 
# 回传 xpysqr = xpy**2 
dxpy = (2 * xpy) * dxpysqr #(5) 
# 回传 xpy = x + y 
dx = (1) * dxpy #(4) 
dy = (1) * dxpy #(4) # 回传 sigx = 1.0 / (1 + math.exp(-x)) 
dx += ((1 - sigx) * sigx) * dsigx # Notice += !! See notes below  #(3) 
# 回传 num = x + sigy 
dx += (1) * dnum #(2) 
dsigy = (1) * dnum #(2) 
# 回传 sigy = 1.0 / (1 + math.exp(-y)) 
dy += ((1 - sigy) * sigy) * dsigy #(1)

回传流中的模式:

这里写图片描述

门单元的含义

这里写图片描述

学习率的选择

这里写图片描述

梯度的更新 w -= a*^w

参考CS231n 笔记 https://zhuanlan.zhihu.com/p/21407711?refer=intelligentunit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值