最近修改一个代码的时候,当使用网络进行推理的时候,发现每次更改测试集的batch size大小竟然会导致推理结果不同,甚至产生错误结果,后来发现在网络中定义了BN层,BN层在训练过程中,会将一个Batch的中的数据转变成正太分布,在推理过程中使用训练过程中的参数对数据进行处理,然而网络并不知道你是在训练还是测试阶段,因此,需要手动的加上,需要在测试和训练阶段使用如下函数。
model.train() or model.eval()
BN类的定义见pytorch中文参考文档
https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/
本文探讨了在使用包含BN层的神经网络进行推理时,不同的batchsize设置导致结果变化的问题。解释了BN层的工作原理,并强调了在训练和测试阶段正确设置模型状态的重要性。
1万+

被折叠的 条评论
为什么被折叠?



