为什么ResNet每次输出结果都一样?

今天真是见了鬼了,无论我怎么替换图片,输入到resnet18或者50的预训练模型的输出结果总是一样。

具体来说,是最大预测概率的索引总是一样,无论我认的是山羊,还是哈士基或者柯基。

然后我尝试去用一个torch.randint(0, 256, (224, 224, 3))去生成一个opencv打开的图片尺寸,经过resnet推理后的输出结果,还是一样,具体概率会有略微差距,但是最大值索引始终一样。

我感觉很奇怪,明明每次输入都不一样,怎么结果就一样呢?

问了一下ChatGPT之后,我才理解了一些,可能在这个ResNet网络中,如果是自己生成的图片,虽然每次的噪点图不一样,但在这个网络看来都是一样的,结果就基本一致了。或者执行个上百次会有几次不一样。

另外犯的一个错误是,我采用了

image.resize((224, 224, 3))来resize图片尺寸,我不太熟悉它个方法,但应该是错的,因为它的结果和image = cv2.resize(image, (224, 224))不一致,但后者是对的。

这也导致我的图片前处理后的结果出错。

另外如果是推理的话,还是要加上model.eval()和torch.no_grad()

猜你喜欢

转载自blog.csdn.net/cicy5219/article/details/131489400
今日推荐