Pytorch的net.train 和 net.eval的使用

在训练模型时会在前面加上:

model.train()

在测试模型时在前面使用:

model.eval()

同时发现,如果不写这两个程序也可以运行,这是因为这两个方法是针对在网络训练和测试时采用不同方式的情况,比如Batch NormalizationDropout

  • 训练时是正对每个min-batch的,但是在测试中往往是针对单张图片,即不存在min-batch的概念。由于网络训练完毕后参数都是固定的,因此每个批次的均值和方差都是不变的,因此直接结算所有batch的均值和方差。所有Batch Normalization的训练和测试时的操作不同
  • 在训练中,每个隐层的神经元先乘概率P,然后在进行激活,在测试中,所有的神经元先进行激活,然后每个隐层神经元的输出乘P。

参考

  1. https://blog.csdn.net/u011276025/article/details/78507950
  2. https://blog.csdn.net/u012436149/article/details/78623576

猜你喜欢

转载自blog.csdn.net/qq_36653505/article/details/84728489
今日推荐