解决TypeError: SwinTransformer: __init__() got an unexpected keyword argument ‘embed_dim‘

内容部分转自:原文链接
Swin transformer复现遇到的问题及解决方法
1)问题:TypeError: SwinTransformer: init() got an unexpected keyword argument ’embed_dim’
分析全部报错:

Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 66, in build_from_cfg
    return obj_cls(**args)
TypeError: __init__() got an unexpected keyword argument 'embed_dim'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 66, in build_from_cfg
    return obj_cls(**args)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmdet/models/detectors/cascade_rcnn.py", line 20, in __init__
    super(CascadeRCNN, self).__init__(
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmdet/models/detectors/two_stage.py", line 32, in __init__
    self.backbone = build_backbone(backbone)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmdet/models/builder.py", line 20, in build_backbone
    return BACKBONES.build(cfg)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 234, in build
    return self.build_func(*args, **kwargs, registry=self)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/cnn/builder.py", line 27, in build_model_from_cfg
    return build_from_cfg(cfg, registry, default_args)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/mmcv/utils/registry.py", line 69, in build_from_cfg
    raise type(e)(f'{obj_cls.__name__}: {e}')
TypeError: SwinTransformer: __init__() got an unexpected keyword argument 'embed_dim'

我的目的是调用本地包的方法,但是从报错中我们看出,实际调用的是安装的同名外部包的方法。python包的法则不是如果模块名称冲突, 当前目录的模块优先于标准库导入. 因为 sys.path 中当前目录在最前面.吗?大部分情况下确实是这样,有两种情况下不是:
1、Python3 中有些特殊的库, 即使本地目录中有同名文件, 在导入时也不会被覆盖.比如 site, sys, os, builtins 等.原因是: 一些 内建模块(built-in) 以及 和Python运行时相关 的库名不会被覆盖
2、你的程序运行目录,并不包含你的本地包,而你单纯的认为包含,例如:
-A
–a
–b
–b.py
python b.py 此时你的工作目录在b下,所以找不到a,只能从安装的外部模块找
2)出现原因
本地包和安装的外部包重名,此处想调用的是本地包中的方法,借用原作一张图,就讲清楚了表现。

解决TypeError: SwinTransformer: __init__() got an unexpected keyword argument ‘embed_dim‘
在不同目录下它寻找的mmdet包不同
在swin_master/(你的项目)目录下它会寻找该项目内本来包含的mmdet文件夹
但是在swin_master/tools文件夹下,它会寻找openmmlab环境中的mmdet

3)解决方法
1:
在终端输入

export PYTHONPATH=/home/techart/xyz/swin/swin_master

设置环境变量
指定它去该目录下寻找mmdet包
最好本地包命名 xxx_custom

2:

解决TypeError: SwinTransformer: __init__() got an unexpected keyword argument ‘embed_dim‘
3(推荐):
如果觉得需要改动的点太多,更推荐运行作者的setup.py
python setup.py develop

Original: https://blog.csdn.net/zkp_987/article/details/125651523
Author: GZKPeng
Title: 解决TypeError: SwinTransformer: init() got an unexpected keyword argument ‘embed_dim‘

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/649867/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球