pytorch dropout || model.train() || model.eval()

今天学习pytorch,发现模型中间加了一层dropout层:

x = F.dropout(x, training=self.training)

大家知道,dropout层的作用就是将前面一层神经元的元素以一定概率置为0,减少模型对于某些特征的依赖,提高模型的泛化性。这个training=self.training是啥意思呢。要知道我们的模型都是继承自nn.Module类,这个类在训练的时候会使得self.training为true,此时我们就正常使用dropout,而在测试的时候,self.training为false,此时关闭dropout层。

那我们怎么改变模型的状态呢,我们咋知道模型处于训练状态还是测试状态呢,这里就需要用到两个函数:train()和eval()
假设说我们new的模型叫model,那么我们训练和测试应该是这样的:

model.train()  #模型处于训练状态
训练代码…………

model.eval() #模型处于测试状态
测试代码…………
上一篇:深度学习(TensorFlow)(7)拟合(过拟合处理)(数据增强、提前停止训练、dropout、正则化、标签平滑)


下一篇:keras-归一化-激活函数-dropout