Batch Normalization--全连接神经网络和卷积神经网络实战
来源:互联网 发布:python自学视频教程 编辑:程序博客网 时间:2024/06/05 05:54
Batch Normalization原理
网上博客一大堆,说的也很明白,这里就简单的说一下我的个人理解:
- 对每一个特征值进行 0均值化,利于神经网络拟合时,对于自身的参数b,无需修改很多次,就可以达到收敛。(因为b的初始值是设为0的)
- 去相关化,由于图像信息相邻像素间的信息有很多是相关的,去相关虽然有一个的训练精度损失,但是更有易于分类。
Batch Normalization好处
- 训练收敛速度快!
- 训练对于drop_out, 正则化参数, 衰减系数等容错能力更强!
- 还有很多优点,但博主现在还没有深入研究
全连接BN和非BN的对比
上图是没有采用BN时候,利用SGD+动量法来优化的损失函数和分类准确率的变化趋势。再来看一下采用了BN算法的结果
这效果也太好了!!!!!
全连接神经网络Batch Normalization实现
BN正向传播伪代码
输入: 一批量的样本x、 可学习参数gamma、 可学习参数beta
输出 : BN化的样本
算法:
- 计算批量样本的均值
- 计算批量样本方差
- 计算 x’ = (x - 均值) / sqrt(方差)
- 输出新样本值为 y = gamma * x’ + beta
代码实现如下
sample_mean = np.mean(x, axis = 0) sample_var = np.var(x, axis = 0) x_hat = (x - sample_mean) / (np.sqrt(sample_var + eps)) out = gamma * x_hat + beta cache = (gamma, x, sample_mean, sample_var, eps, x_hat) running_mean = momentum * running_mean + (1 - momentum) * sample_mean running_var = momentum * running_var + (1 - momentum) * sample_var
BN后向传播实现
这里就得先看看其求导的公式了,图片如下:
这是求导的公式图片
代码实现如下:
#cache中存着前向传播时候的参数 gamma, x, sample_mean, sample_var, eps, x_hat = cache N = x.shape[0] dx_hat = dout * gamma #计算方差对结果的偏导 dvar = np.sum(dx_hat* (x - sample_mean) * -0.5 * np.power(sample_var + eps, -1.5), axis = 0) #计算均值对结果的偏导 dmean = np.sum(dx_hat * -1 / np.sqrt(sample_var +eps), axis = 0) + dvar * np.mean(-2 * (x - sample_mean), axis =0) #计算该批量样本对结果的偏导 dx = 1 / np.sqrt(sample_var + eps) * dx_hat + dvar * 2.0 / N * (x-sample_mean) + 1.0 / N * dmean #计算可学习参数gamma对结果的偏导 dgamma = np.sum(x_hat * dout, axis = 0) #计算可学习参数beta对结果的偏导 dbeta = np.sum(dout , axis = 0)return dx, dgamma, dbeta
0 0
- Batch Normalization--全连接神经网络和卷积神经网络实战
- Batch Normalization 神经网络加速算法
- 神经网络Batch Normalization层学习
- 卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解
- 神经网络训练细节之batch normalization
- 全卷积神经网络+gpu
- 实战卷积神经网络
- 卷积神经网络训练实战
- 卷积和卷积神经网络
- FCN(全卷积神经网络)
- Batch Normalization —— 加速深度神经网络收敛利器
- 在神经网络中weight decay、momentum、batch normalization各自意义
- Batch Normalization:加速神经网络训练的通用手段
- 深度神经网络优化(三)- Hyperparameter tuning, Batch Normalization
- 神经网络-全连接层
- 什么是全连接神经网络
- 全连接神经网络
- 卷积神经网络全连接层转换为卷积层获得heatmap
- java中final关键字
- 数组排序几种实现方式
- uva 11404 Palindromic Subsequence(LCS 记录中间过程)@
- Android Studio集成极光推送
- 应用机器学习(三):朴素贝叶斯分类器
- Batch Normalization--全连接神经网络和卷积神经网络实战
- 深入理解windows内部原理系列--笔记二
- scp使用
- css3
- 最小生成树问题(prim算法)POJ-1258 Agri-Net
- 阿里云ESC搭建javaWeb环境
- 面试题24:二叉搜索树的后序遍历序列
- 打印输入的单词长度和各个字符出现频数的直方图(水平方向和垂直方向)
- 移动端身份证识别app如何