手推Assignment2中BN反向传播

手推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反向传播!

640?wx_fmt=png

3.任务及BN实现

任务

本节作业是

  • 完成 assignment2 中 BatchNormalization.ipynb

  • 完成 assignment2 中 Dropout.ipynb

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

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

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

BN实现

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

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

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!

4.作者的话

如果您觉得本公众号对您有帮助,欢迎转发,支持!!谢谢!!有关更多内容,请关注本公众号:作业详解系列!!!

640?wx_fmt=png

对于assignment failure这个课题,我想重点讨论2F方面的原因和解决方法。 首先,导致assignment failure的原因可能有很多。2F可能因为以下几个方面出现问题。首先,学生可能没有充分理解assignment的要求和目标,导致他们无法确地完成任务。其次,时间管理不当也是一个可能的原因。学生可能在处理assignment时没有合理规划时间,导致任务不能按时完成。此外,学生可能缺乏足够的研究能力,无法有效地获取和整理相关信息,从而无法完成assignment。最后,2F在分配任务时可能没有清晰地传达assignment的要求,或者没有提供足够的支持和指导,导致学生无法完成任务。 针对2F的assignment failure,有一些解决方法可以考虑。首先,老师可以加强与学生的沟通,确保学生充分理解assignment的要求和目标。建议老师提供一个详细的assignment说明文档,明确任务的具体要求和评分标准。同时,老师可以定期与学生进行小组讨论或个别辅导,解答学生对assignment的疑问,并提供适当的指导和建议。 另外,学生自己也可以采取一些措施来预防assignment failure。学生首先应该认真阅读assignment要求和其他相关材料,确保充分理解任务的目标和要求。其次,学生需要良好的时间管理能力,制定合理的时间计划,并确保按计划进行。另外,学生可以提前展开研究,查找相关资料并进行整理,以便更好地完成assignment。此外,学生应主动与教师和同学进行沟通交流,寻求必要的支持和帮助。 综上所述,2F的assignment failure可能由多种原因导致,包括学生对任务不理解、时间管理不当和缺乏研究能力,同时也可能与老师在分配任务时的沟通不清和支持不足有关。为了解决这个问题,老师和学生可以采取一系列措施,如加强沟通、明确任务要求、提供指导和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值