[v2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift，top5 error 4.8%

During training we need to backpropagate the gradient of loss ℓ through this transformation, as well as compute the gradients with respect to the parameters of the BN transform. We use chain rule...

##### Batch Normalization反向传播实现

```def batchnorm_backward(dout, cache):
"""
Backward pass for batch normalization.
For this implementation, you should write out a computation graph for
batch normalization on paper and propagate gradients backward through   intermediate nodes.
Inputs:
- dout: Upstream derivatives, of shape (N, D)
- cache: Variable of intermediates from batchnorm_forward.

Returns a tuple of:
- dx: Gradient with respect to inputs x, of shape (N, D)
- dgamma: Gradient with respect to scale parameter gamma, of shape (D,)
- dbeta: Gradient with respect to shift parameter beta, of shape (D,)
"""
dx, dgamma, dbeta = None, None, None
x, gamma, beta, var, miu, x_hat, eps = cache
m = len(x)
dx_hat = dout * gamma
dvar = np.sum(dx_hat * (x-miu), axis=0) * -0.5 * (var + eps) ** (-1.5)
dmiu = np.sum(dx_hat * (-1) / np.sqrt(var+eps), axis=0) + dvar * np.mean(-2 * (x - miu), axis=0)
dx = dx_hat / np.sqrt(var + eps) + dvar * 2 * (x - miu) / m + dmiu / m
dgamma = np.sum(dout * x_hat, axis=0)
dbeta = np.sum(dout, axis=0)
return dx, dgamma, dbeta```

Tensorflow的源码里应该也会有相应的实现，以后我再找找看。

`def softmax_loss(x, y):   """   Computes the loss and gradient for softmax classification.    Inputs:   - x: Input data, of shape (N, C) where x[i, j] is the score for the jth class     for the ith input.   - y: Vector of labels, of shape (N,) where y[i] is the label for x[i] and     0 <= y[i] < C    Returns a tuple of:   - loss: Scalar giving the loss   - dx: Gradient of the loss with respect to x   """   probs = np.exp(x - np.max(x, axis=1, keepdims=True))   probs /= np.sum(probs, axis=1, keepdims=True)   N = x.shape[0]   loss = -np.sum(np.log(probs[np.arange(N), y])) / N   dx = probs.copy()   dx[np.arange(N), y] -= 1   dx /= N  return loss, dx`

dx = probs.copy() dx[np.arange(N), y] -= 1

```def relu_backward(dout, cache):
"""
Computes the backward pass for a layer of rectified linear units (ReLUs).
Input:
- dout: Upstream derivatives, of any shape
- cache: Input x, of same shape as dout    Returns:
- dx: Gradient with respect to x
"""
dx, x = None, cache    dx = dout   dx[x <= 0] = 0
return dx```

0 条评论

• ### 数据分析中的可视化-常见图形

import matplotlib.pyplot as plt import pandas as pd from pandas import Series, D...

• ### 计算机视觉任务：图像梯度和图像完成

该笔记是以斯坦福cs231n课程的python编程任务为主线，展开对该课程主要内容的理解和部分数学推导。这篇文章是关于计算机视觉处理的，分为两篇文章撰写完成。此...

• ### 人工智能迎来第三次发展浪潮，全球人工智能产业生态系统逐步完善

? 2016年，人工智能经历了两起两落迎来了第三次发展浪潮，技术驱动下的人工智能从实验室走向了市场，并进入了快速发展阶段。 1950-1969 兴起阶段 ...

• ### Angular网站国际化处理

angular.js 官方出了一个模块 angular-translate 来解决多语言国际化问题

• ### 2019中国计算机高引学者榜单出炉，164人入选，周志华位列第二

全球最大学术出版商之一爱思唯尔（Elsevier），发布了2019年中国高引学者榜单。

• ### 引导式Dyna-Q用于移动机器人探索和导航(CS RO)

基于模型的强化学习（RL）使代理能够从反复试验的经验中学习世界模型，以实现长期目标。 另一方面，自动计划可用于通过声明性行动知识进行推理来完成任务。 尽管他们有...

• ### 网媒阵容豪华，里约奥运会成移动和直播新媒体竞技场

8月5日，巴西里约将迎来举世瞩目的第31届奥运会。7月18日，中国豪华军团正式成立，规模达到711人，其中运动员400多人，是中国境外参赛史上规模最大的一届，届...

• ### 浅谈 C++ 元编程

? 随着 C++ 11/14/17 标准的不断更新，C++ 语言得到了极大的完善和补充。元编程作为一种新兴的编程方式，受到了越来越多的广泛关注。结合已有文献和...

• ### 【精华】Batch Normalization理论与实践

batch norm也可以当做调参的一部分，对于有些实验是有效果的，有些实验是几乎没啥效果，但是它的收敛速度还是很客观的，所以我们还是有必要要了解下哒！

• ### spring cloud zuul网关的作用

zuul一般有两大作用,1是类似于Nginx的网址重定向,但zuul的重定向的一般是整个spring cloud里在Eureka注册中心的模块.