问题描述:
在使用mmseg复现语义分割模型时,代码报错RuntimeError: CUDA error: an illegal memory access was encountered。报错截图如下所示:
刚刚开始因为我复现源代码的时候是可以运行的,但是我没有运行全过程。然后就在代码的基础上进行了网络结构的修改。因为报错实在解析损失时发生了错误,所以我一直没找到解决方案。查看了百度、CSDN、github的答案,发现他们也遇到了这个问题。他们的解决方法是进行batchsize的调小,还有就是说显卡故障啥的,不过这些方法对我的没用。然后困扰我好几天,让我emo了好久,一直觉得自己很笨,就一直在逃避,不想去解决。
后面有一天晚上,我把错误一口气复制粘贴查找,发现了这个宝藏up主写的文章,给了我很大的启发!!!真的很感谢up主--FALALILA。后面我发现自己没有对标签进行转换,直接用的原始数据集的标签id!!!然后将标签id转换为0,1,2,3....之后,代码成功运行了!!!yepyep
ps:这个博主写的和我经历很像,真的超级感谢!!!
参考链接:记录使用mmseg时在计算交叉熵损失遇到的RuntimeError问题与解决方案_correct = correct[:, target != ignore_index]-CSDN博客