前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手推Assignment2中BN反向传播

手推Assignment2中BN反向传播

作者头像
公众号guangcity
发布2019-09-20 13:15:28
1K0
发布2019-09-20 13:15:28
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

手推Assignment2中BN反向传播

0.说在前面

或许有些人对于上一节说的BN推导没有深入理解,那么本节则从一篇非常好的论文中来实践带大家手推一遍,与此同时,完成Week6的作业!

下面第二篇是我总结的numpy在cs231n中使用及一些常见用法,建议手敲!

对于本节内容,请各位拿出纸与笔,下面一起来实战吧!

1.Paper

这里推荐一篇论文,非常值得看!也非常经典,看不懂的,可以到网上去看,有很多大佬做了相应的阐述。这里放出论文地址:

https://arxiv.org/abs/1502.03167

或者直接搜:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

2.手推

这里直接放出论文中的相关公式,以及自己的手推BN反向传播!

3.任务及BN实现

任务

本节作业是

  • 完成 assignment2 中 BatchNormalization.ipynb
  • 完成 assignment2 中 Dropout.ipynb

第二个dropout已经在上节给出代码了,直接运行就可以了,只需要做的就是里面的cell问题即可!

今天这篇重点讲解本节难点:也就是第一个任务,完成BatchNormalization!

由于上一节已经介绍了反向传播,代码也给了,但是在这里缺少实现batchnorm_backward_alt,于是我们今天重点就放到了完成这个代码上面,同时温故上一节BN方向传播公式,并给出今日这个未完成方法的完整手推及实现!

BN实现

有关BN的手推上面给出了图片解释,这里只需要完成相应代码即可!

实现在layers.py找到下面方法完善即可!

代码语言:javascript
复制
def batchnorm_backward_alt(dout, cache):
    dx, dgamma, dbeta = None, None, None
    x_normalized, gamma, beta, sample_mean, sample_var, x, eps = cache
    N, D = x.shape
    dx_normalized = dout * gamma       # [N,D]
    x_mu = x - sample_mean             # [N,D]
    sample_std_inv = 1.0 / np.sqrt(sample_var + eps)    # [1,D]
    dgamma = np.sum(dout * x_normalized, axis=0, keepdims=True)
    dbeta = np.sum(dout, axis=0, keepdims=True)
    dx = (1./N)*sample_std_inv*(N*dx_normalized-np.sum(dx_normalized,axis=0,keepdims=True)*x_normalized-np.sum(dx_normalized,axis=0,keepdims=True))
    return dx, dgamma, dbeta

这里给出为什么这个任务需要完成这个呢?

对于cs231n的课程作业,有个很好的优点,就是注释详细,不懂的直接看,下面给出英文及中文解释!

英文解释:

After doing so, implement the simplified batch normalization backward pass in the function batchnorm_backward_alt and compare the two implementations by running the following. Your two implementations should compute nearly identical results, but the alternative implementation should be a bit faster.

在这样做之后,在函数batchnorm_backward_alt中实现简化的批量规范化反向传递,并通过运行以下命令来比较这两个实现。您的两个实现应该计算几乎相同的结果,但替代实现应该更快一点!

哈哈,这个是我谷歌翻译的,我就直接照搬过来了,想表达的意思就是最后的求导尽量用原来公式来代替!这也就是方法里面有个alt,这个英文全拼就是alternative!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 手推Assignment2中BN反向传播
    • 0.说在前面
      • 1.Paper
        • 2.手推
          • 3.任务及BN实现
          相关产品与服务
          批量计算
          批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档