我有一个带有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')
我尝试了各种优化程序,激活功能,时期数,批处理大小等,但是没有区别。
答案 0 :(得分:0)
对于回归,您不应该在BatchNorm
层之前使用output
。
另一方面,您可以在BatchNorm
层之后和第一input
层之前使用Dense
来标准化输入。