如何解决多光谱目标检测项目运行时的GELU approximate属性缺失错误?
修复GELU模块"approximate"属性缺失错误
错误原因
该错误源于你使用的PyTorch版本过低,旧版本的torch.nn.GELU类未实现approximate属性,但项目代码的GELU前向传播逻辑中调用了该参数,导致属性查找失败。
修复方案
方案一:升级PyTorch到兼容版本
执行以下命令升级PyTorch及相关依赖:
pip install --upgrade torch torchvision torchaudio
如果是GPU环境,请根据自身CUDA版本选择对应安装包,例如CUDA 11.7可使用:
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
方案二:修改项目代码适配旧PyTorch版本
若不想升级PyTorch,可替换项目中的GELU实现:
- 打开项目的
models/common.py文件,找到MLP结构中使用nn.GELU()的位置 - 替换为自定义的GELU类,示例代码如下:
# 在文件顶部导入依赖 import torch import torch.nn as nn # 自定义兼容旧版本的GELU实现 class CustomGELU(nn.Module): def forward(self, x): return torch.nn.functional.gelu(x) # 找到MLP定义处,将原有的nn.GELU()替换为CustomGELU() # 例如原代码:self.mlp = nn.Sequential(..., nn.GELU(), ...) # 修改为:self.mlp = nn.Sequential(..., CustomGELU(), ...)
- 保存文件后重新运行训练/测试脚本即可。
内容的提问来源于stack exchange,提问作者Poca
相关产品推荐
相关产品推荐

