真是见了鬼了,搞好半天没弄清楚啥原因。把每个预测值看了一遍,确实每次结果不同。
原因排查:
- 自定义的Metric写的有问题,会根据batch_size变化,是按batch_size大小按每个batch分别计算的,而不是按batch累计的
- 被测试的网络结构中有Dropout层,比如nn.Dropout
- 测试的数据loader加入了随机处理,比如transforms.RandomCrop()
- 测试的时候没有打开 model.eval()
- 没有固定随机种子
- 其他可能的原因,目前我还没遇到。
解决1:固定随机种子
感谢:
https://blog.csdn.net/t20134297/article/details/103556945
https://blog.csdn.net/kangk_521/article/details/81225787