Kaggle Notebook中segmentation-models-pytorch导入报错的解决咨询
在Kaggle Notebook中解决segmentation-models-pytorch导入报错的方案
核心问题分析
你遇到的报错根源是当前Kaggle环境的PyTorch 1.6.0与新版segmentation-models-pytorch(smp)及依赖包不兼容:
- PyTorch 1.6.0没有
torch.nn.SiLU模块,而新版smp依赖的timm 0.9.2用到了该模块 - timm 0.9.2要求PyTorch≥1.7,但Kaggle无法升级PyTorch版本
- 其他依赖包(bokeh、huggingface-hub)的版本冲突属于衍生问题
解决方案:安装兼容旧版PyTorch的依赖包版本
直接安装适配PyTorch 1.6.0的smp及依赖包版本,步骤如下:
- 卸载现有冲突包
!pip uninstall -y segmentation-models-pytorch timm huggingface-hub bokeh
- 安装兼容版本
!pip install segmentation-models-pytorch==0.3.0 timm==0.4.12 typing-extensions==3.7.4.3 tornado==5.1.1
各版本选择原因:
segmentation-models-pytorch==0.3.0:官方明确支持PyTorch 1.6.0,无需依赖高版本timmtimm==0.4.12:适配PyTorch 1.6.0,不会触发torch>=1.7的要求typing-extensions==3.7.4.3:满足huggingface-hub的依赖要求tornado==5.1.1:解决bokeh 2.2.3的版本冲突
- 验证并导入
安装完成后,先确认环境版本:
import torch import timm print(f"PyTorch版本: {torch.__version__}") print(f"timm版本: {timm.__version__}")
确认无误后导入smp:
import segmentation_models_pytorch as smp
临时替代方案(不推荐)
如果一定要使用新版smp,可在导入前手动添加SiLU模块实现,但可能存在其他隐藏兼容性问题:
import torch import torch.nn.functional as F # 手动添加SiLU模块 if not hasattr(torch.nn, 'SiLU'): class SiLU(torch.nn.Module): def forward(self, x): return F.silu(x) torch.nn.SiLU = SiLU # 再导入smp import segmentation_models_pytorch as smp
内容的提问来源于stack exchange,提问作者Om Soni
相关产品推荐
相关产品推荐

