原文地址:

https://blog.csdn.net/weixin_40100431/article/details/84349470

-----------------------------------------------------------------------------------------

最近修改一个代码的时候,当使用网络进行推理的时候,发现每次更改测试集的batch size大小竟然会导致推理结果不同,甚至产生错误结果,后来发现在网络中定义了BN层,BN层在训练过程中,会将一个Batch的中的数据转变成正太分布,在推理过程中使用训练过程中的参数对数据进行处理,然而网络并不知道你是在训练还是测试阶段,因此,需要手动的加上,需要在测试和训练阶段使用如下函数。

model.train() or model.eval()

BN类的定义见pytorch中文参考文档

https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/

------------------------------------------------------------------------------------------------------------
作者:张叫张大卫
来源:CSDN
原文:https://blog.csdn.net/weixin_40100431/article/details/84349470
版权声明:本文为博主原创文章,转载请附上博文链接!

【转载】  Pytorch(1) pytorch中的BN层的注意事项-LMLPHP

【转载】  Pytorch(1) pytorch中的BN层的注意事项-LMLPHP

【转载】  Pytorch(1) pytorch中的BN层的注意事项-LMLPHP

05-19 14:30