Gul*_*zar 93 python machine-learning deep-learning pytorch
我正在使用此代码,并且model.eval()在某些情况下看到了。
我知道它应该允许我“评估我的模型”,但我不明白什么时候应该和不应该使用它,或者如果关闭如何关闭。
我想运行上面的代码来训练网络,并且还能够在每个时期运行验证。我还是做不到。
trs*_*chn 152
model.eval()是模型的某些特定层/部分的一种开关,在训练和推理(评估)期间表现不同。例如,Dropouts Layers、BatchNorm Layers 等。您需要在模型评估期间关闭它们,并.eval()会为您完成。此外,评估/验证的常见做法是torch.no_grad()成对使用model.eval()以关闭梯度计算:
# evaluate model:
model.eval()
with torch.no_grad():
...
out_data = model(data)
...
Run Code Online (Sandbox Code Playgroud)
但是,不要忘记training在 eval 步骤后返回模式:
# training step
...
model.train()
...
Run Code Online (Sandbox Code Playgroud)
uke*_*emi 12
model.train() |
model.eval() |
|---|---|
| 在训练模式下设置模型: • 标准化层1使用每批统计信息 • 激活 Dropout层2 |
集模型中的eval uation(推断)模式: •规范化层使用运行统计 •去激活 Dropout层相当于 model.train(False)。 |
您可以通过运行关闭评估模式model.train()。您应该在将模型作为推理引擎运行时使用它 - 即在测试、验证和预测时(尽管实际上如果您的模型不包含任何不同行为的层,它不会有任何区别)。
BatchNorm,InstanceNormpro*_*sti 10
model.eval是一种方法torch.nn.Module:
eval()将模块设置为评估模式。
这仅对某些模块有任何影响。见特定模块的单证在培训/评估模式及其行为的详细信息,如果他们受到影响,例如
Dropout,BatchNorm等等。这相当于
self.train(False).
model.trainUmang Gupta 很好地解释了相反的方法。
| 归档时间: |
|
| 查看次数: |
76431 次 |
| 最近记录: |