哪里可以应用批量标准化

时间:2018-11-29 22:14:07

标签: python deep-learning pytorch batch-normalization

我有输入数据,并且正在通过relu-hidenden层传递它。我想问我应该在哪里应用批量标准化?以下是模型架构:

def function(self, data):
    hidden_layer = F.relu((self.layer1(data)))
    pred = self.pred(hidden_layer)
    pred = self.softmax(pred)
    return pred

我最好的猜测是它应该像self.batch_norm(hidden_layer)一样在隐藏层上进行。输入数据已经使用X = StandardScaler().fit_transform(X)

进行了缩放

1 个答案:

答案 0 :(得分:0)

这是一个简单的提示...一旦您的数据通过 any 层,它们将不再具有其原始形式-而且最重要的是,它们不再具有批量

唯一可用于有效批处理规范的位置就在您输入第一个隐藏层之前。

在许多(大多数?)实现中,批处理的观察是逐个顺序地遍历各个层;结果在最后一层累积。在这种情况下,“批次”主要指的是反向支持阶段:我们将反向支持推迟到运行批处理中的所有观测值之后,然后再按批次平均值进行更新。

对于任何层接口,都可以通过归一化来抵消权重的消失或爆炸-这可能会使您感到困惑。但是,通常最好(1)在知道自己需要之前不要把手伸进去; (2)做为反向传播的一部分-再次引入“批处理”同步。