本来我的模型是好好的,昨天只是稍微修改了一下模型的运行代码,不知道为什么loss始终不下降,模型没办法拟合
debug了一天,模型全都回滚了,都没有用……
今天我终于发现,是因为我去掉了样本的shuffle过程
之前跑的时候,为了能完全复现结果,把所有dataloader的shuffle都关掉了,并且固定了所有seed,只有读入模型的时候shuffle了一次样本
一旦去掉了这个shuffle,就完全不拟合了……加回去之后就好了,或者把dataloader的shuffle打开也可以。
附固定seed的代码块
def setup_seed(seed): torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) torch.backends.cudnn.enabled = False torch.backends.cudnn.benchmark = False torch.backends.cudnn.deterministic = True np.random.seed(seed) random.seed(seed)