https://zhuanlan.zhihu.com/p/466913996?utm_id=0
在一些训练或测试函数中,常出现下面的用法:
def train():
net.train()
...
def eval():
net.eval()
...
net.train()和net.eval()到底在什么时候使用?
如果一个模型有Dropout与Batch Normalization,那么它在训练时要以一定概率进行Dropout或者更新Batch Normalization参数,而在测试时不在需要Dropout或更新Batch Normalization参数。此时,要用net.train()和net.eval()进行区分。
在没有涉及到BN与Dropout的模型,这两个函数没什么用。