首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在深度学习中执行批处理规范化的确切逻辑是什么?

在深度学习中执行批处理规范化的确切逻辑是什么?
EN

Stack Overflow用户
提问于 2021-08-20 14:23:55
回答 1查看 61关注 0票数 0

在论坛上阅读了关于批处理规范及其各种描述的研究论文之后,我仍然不清楚基本计算是如何执行的。我问题的核心是:向量相对于它所属的集合是规范化的;因此,我们可以使用从训练集中选择的批处理来规范输入到第一层的向量。下一层的每个输入向量都需要对它所属的集合进行规范化,但是我们如何获得该集合呢?

更准确地说,让

  • N =批大小;
  • Bi=一组向量(j =1.n),其归一化值将输入到网络的第一层;
  • BN=批规范化的
  • Bi) =j-第四向量的归一化版本,关于集合Bi.

B_n(X1j,B1),j=1.n,可以计算,因为我们知道B1。它们是第一层的输入。

我们需要BN(X2j,B2),j= 1..n,输入到第二层,但是我们没有现成的B2。我的问题是如何得到B2,B3等。

我们可以按第1层处理每个BN(X1j,B1),j=1.n,并将输出记为X2j (该集合将为B2)。然后通过对每一个j的x2j( B2,B2)进行正规化计算,然后将它们输入到第二层等,这样向前通过就会包含许多这样的步骤。为了简单起见,我忽略了规模和移位步骤,因为这与我的问题无关。

对于这个话题,我非常感谢专家的意见。

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 20:08:25

Batch Norm首先减去使输出中心为零的平均值。然后,用标准推导法对输出进行分批归一化,使输出缩放为单位方差。

这意味着每一个向量都与它所属的批处理相关。假设您在第一层运行x,让我们调用它的输出y1。然后将批处理规范化以(y1 - y1.mean()) / y.std()的形式应用于(y1 - y1.mean()) / y.std()。您所说的“集合”只是向量y1,这是层的输出。

当然,所有这些都忽略了偏倚和推导的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68863823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档