问题描述
训练好的模型,在测试集上进行多次评估,得到的结果不一致,但是差异很小。
问题分析和解决方法
-
没有使用model.eval(), 导致模型中BN和Dropout没有关闭。
``` model.eval() with torch.no_grad(): ... outputs = model(data) ... ```
-
测试数据在数据处理阶段使用了数据增广
去除产生多样性数据的数据增广,例如:压缩、对比度变化等
-
数据层面上,加载数据集是drop_last设置为true,并且数据总数/batchsize有余数。因此test数据集的drop_last应设为false。drop_last为true是指在最后一个batch中,数据小于设置的batchsize时,是否丢弃这个batch。
torch.utils.data.DataLoader(image_datasets, batch_size=args.batch_size, shuffle=True, num_workers=args.num_workers, drop_last=False)