torch.nn模块中函数eval()的含义是什么?

闫伯元*_*闫伯元 15 pytorch

官方评论显示"这仅对Dropout或BatchNorm等模块有任何影响." 但我不明白它的实施.

小智 16

Dropout和BatchNorm(可能还​​有一些自定义模块)在培训和评估过程中表现不同.您必须通过调用模型让模型知道何时切换到eval模式.eval().

这台self.trainingFalse对模型中的每个模块.如果您正在实施自己的模块,在训练和评估期间必须采取不同的行为,您可以self.training在执行此操作时检查其值.

  • 在官方的PyTorch教程(60分钟闪电战,训练分类器)中,当切换到评估(测试集)时,他们没有使用`.eval()`。也许他们没有使用它,因为没有Dropout或Batchnorm层。但是我认为从教育的角度来看,他们应该无论如何都要使用它(即使它没有效果),或者至少要提及它,因为一般情况下是必需的= / (2认同)