损失随着批次归一化而增加(tf.Keras)

时间:2018-06-26 22:36:22

标签: tensorflow neural-network keras batch-normalization

我有一个带有2个隐藏层的FF NN,用于回归问题。与我不添加BN的情况相比,在相同数量的纪元上训练时,损失(MSE)大约是两倍,执行时间也增加了大约20%。为什么会这样?

如果我不得不猜测-BN在2层网络上不值得,并且BN引入的额外开销实际上要比它导致的处理时间减少更多。

这可以解释执行时间,但是我不确定为什么损失也会增加。

model = Sequential()
model.add(Dense(128, 'relu'))
model.add(BatchNormalization())
model.add(Dense(128, 'relu'))
model.add(BatchNormalization())
model.add(Dense(1, 'linear'))
model.compile(loss=mean_squared_error, optimizer='adam')

我尝试了各种优化程序,激活功能,时期数,批处理大小等,但是没有区别。

1 个答案:

答案 0 :(得分:0)

对于回归,您不应该在BatchNorm层之前使用output

另一方面,您可以在BatchNorm层之后和第一input层之前使用Dense来标准化输入。