1 model.eval()无法关闭dropout
因为model.eval()控制self.training参数,只有用nn.Dropout(0.5)声明才能在调用model.eval()后关闭,用F.dropout(x, p=0.5)是没办法自动关闭的,需要手动把self.training的参数传入到F.dropout()里才行。
网上查到是因为model.eval()会影响继承nn.module类的self.方法的训练和测试,但是F.dropout更像是一个函数没继承nn,module。
另外,回归模型在后面几层应该避免使用dropout,最多在浅层使用。
2 BCEloss归一化
在tf2中BCEloss没有归一化,但是在torch中的损失函数是归一化了的。