简单明了,博主这里就不说错误的原因了,直接放上解决的办法(亲测有效)
问题一:RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [2, 512, 32, 32]], which is output 0 of ReluBackward0, is at version 1; expected version 0 instead. Hint: enable anomaly detection to find the operation that failed to compute its gradient, with torch.autograd.set_detect_anomaly(True).
解决办法:找到swin解码头对应的.py文件:
位置如下:
Swin-Transformer-Semantic-Segmentation-main/mmseg/models/decode_heads/uper_head.py
然后在第104行代码修改为:laterals[i - 1] = laterals[i - 1] + resize(
问题二: 多卡训练问题
解决办法:
因为博主用的配置文件是upernet_swin.py(查看方法如下)
然后将norm_cfg中的type=‘SyncBN’ 修改为 type=‘BN’