使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

实验设置

这个实验的设置非常简单。要模拟真实世界的用例,可以从随机正常分布中创建一个32 * 32图像,并为其添加一些噪声。

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

红框 →(图像数量,图像宽度,图像高度,通道数量)现在我们将使用32 * 32灰度图像。

左图 →我们图像数据的直方图

正如您在上面看到的,我们的图像平均值为26,方差为306。左边我们可以看到图像数据的直方图。

案例1:标准化 - 整体数据

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

对于我们的第一种情况,我们可以对整个数据集进行标准化。从视觉上看,我们可以观察到没有区别。

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

旦我们绘制直方图或查看均值和标准差,我们可以清楚地看到我们的数据在0和1的范围内。

案例2:标准化 - 整体数据

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

再一次,从视觉上看,我看不出有什么不同。

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

但是,当我们看到直方图的轴时,我们可以清楚地看到,我们的数据的均值已经移到0(几乎),方差是1。

标准化/标准化方程式

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

左→

归一化方程式标准化 方程式

以防万一,如果有人想知道,让我们回顾一下正常化和标准化的情况。请注意,μ是平均值,σ是标准偏差

批量标准化等式

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

红框→标准化

蓝线的方程式要学习的参数

现在我们已经涉及了规范化和标准化,我们可以看到批量规范化的公式与标准化的过程完全相同。唯一的区别是gamma和beta术语,用蓝色下划线。我们可以将这些术语看作完全像权重,我们将根据地面实况数据计算误差,并使用反向传播学习这些参数。

案例3:批量标准化 - 纯粹实施

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

红线 →迷你批量,从我们的图像数据

蓝盒 →数据标准化的前10个图像

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

对于批量标准化,我们将从我们的测试数据中获取前10个图像并应用批量标准化。

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

再次,我们可以看到平均值在0左右,方差为1.现在让我们来看看张量流的实现。

案例3:批量标准化 - Tensorflow

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

红线 →迷你批次,图像数据

蓝线→偏移(Beta)中的前10个图像为0,缩放(alpha)为1

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

再一次,在视觉上,我们看不出任何区别。

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

但是,如果我们看一下数据的均值和方差,我们可以看到它与应用标准化完全相同。

交互式代码(Google Collab / Replit / Microsoft Azure Notebook)

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

使用交互代码在Numpy和Tensorflow中使用示例了解批规范化

相关推荐