pytorch 32 onnx模型每次输出的结果都会变的解决方案

正常来说onnx模型每次输出的结果都会变,这是一个超乎寻常,难以理解的话题。因为,模型参数一旦导出后,在理论上就不会发生变化。而且,paddle、pytorch、tensorflow等框架导出模型时,也是默认设置模型的mode值为eval,也就是设置参数不更新。如果不是亲身所历,亲眼所示,博主也不会相信有这种匪夷所思的事情。只能说,碰到过的都懂。正常的使用标准ai框架导出部署模型,万不可能发生这种事情。

博主之所以碰到这种事情,是因为前期操作秀的太6。把手伸到了MMSegmentation中,用自己的方式训练mmseg中的模型,然后又魔改网络进行部署。【因为博主使用的是魔改网络,只能自己用pytorch内置的torch模型转onnx,导出后onnx模型输出就变得不稳定了。通常来说,mmseg、mmdet系列的模型都应该使用mmdeploy进行导出】。在libtorch下部署,模型每次输出的结果都是正常的【任意一次测试,输入不变,输出不变】。而最近,将模型转换为onnx部署后,不管是c++下还是python下,针对于相同的输入数据,onnxruntime每次输出的结果每次都是不一样。

1、状态描述

博主的模型保存为pth(libtorch格式)时,每次加载输出的结果都是固定的。而在转换为onnx进行部署后,针对于相同的输入数据,每次输出的结果都存在细微偏差。

猜你喜欢

转载自blog.csdn.net/a486259/article/details/125908312