From a64303186aa79811a050942f1bdab430a6a7f7af Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 16 Feb 2022 08:59:13 +0800 Subject: [PATCH 1/8] [Fix] Fix wrong img name in onnx2tensorrt.py (#7157) --- tools/deployment/onnx2tensorrt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/deployment/onnx2tensorrt.py b/tools/deployment/onnx2tensorrt.py index 84a9afebda4..e3e9b57d2b4 100644 --- a/tools/deployment/onnx2tensorrt.py +++ b/tools/deployment/onnx2tensorrt.py @@ -201,7 +201,7 @@ def parse_args(): parsed directly from config file and are deprecated and will be \ removed in future releases.') if not args.input_img: - args.input_img = osp.join(osp.dirname(__file__), '../demo/demo.jpg') + args.input_img = osp.join(osp.dirname(__file__), '../../demo/demo.jpg') cfg = Config.fromfile(args.config) From 7a9bc498d5cc972171ec4f7332afcd70bb50e60e Mon Sep 17 00:00:00 2001 From: BigDong Date: Wed, 16 Feb 2022 20:12:35 +0800 Subject: [PATCH 2/8] [Docs] fix albumentations installed way (#7143) --- docs/en/get_started.md | 11 +++++++---- docs/zh_cn/get_started.md | 4 ++-- requirements/albu.txt | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 requirements/albu.txt diff --git a/docs/en/get_started.md b/docs/en/get_started.md index 153ecfa85e3..a5625f38fc5 100644 --- a/docs/en/get_started.md +++ b/docs/en/get_started.md @@ -134,7 +134,7 @@ Or you can still install MMDetection manually: # for LVIS dataset pip install git+https://github.com/lvis-dataset/lvis-api.git # for albumentations - pip install albumentations>=0.3.2 --no-binary imgaug,albumentations + pip install -r requirements/albu.txt ``` **Note:** @@ -148,9 +148,12 @@ you can install it before installing MMCV. c. Some dependencies are optional. Simply running `pip install -v -e .` will only install the minimum runtime requirements. To use optional dependencies like `albumentations` and `imagecorruptions` either install them manually with `pip install -r requirements/optional.txt` or specify desired extras when calling `pip` (e.g. `pip install -v -e .[optional]`). Valid keys for the extras field are: `all`, `tests`, `build`, and `optional`. -d. If you would like to use `albumentations`, we suggest using -`pip install albumentations>=0.3.2 --no-binary imgaug,albumentations`. If you simply use -`pip install albumentations>=0.3.2`, it will install `opencv-python-headless` simultaneously (even though you have already installed `opencv-python`). We should not allow `opencv-python` and `opencv-python-headless` installed at the same time, because it might cause unexpected issues. Please refer to [official documentation](https://albumentations.ai/docs/getting_started/installation/#note-on-opencv-dependencies) for more details. +d. If you would like to use `albumentations`, we suggest using `pip install -r requirements/albu.txt` or +`pip install -U albumentations --no-binary qudida,albumentations`. If you simply use `pip install albumentations>=0.3.2`, +it will install `opencv-python-headless` simultaneously (even though you have already +installed `opencv-python`). We recommended checking the environment after installing `albumentation` to +ensure that `opencv-python` and `opencv-python-headless` are not installed at the same time, because it might cause unexpected issues if they both installed. Please refer +to [official documentation](https://albumentations.ai/docs/getting_started/installation/#note-on-opencv-dependencies) for more details. ### Install without GPU support diff --git a/docs/zh_cn/get_started.md b/docs/zh_cn/get_started.md index 8408007c707..ce817cf560b 100644 --- a/docs/zh_cn/get_started.md +++ b/docs/zh_cn/get_started.md @@ -142,7 +142,7 @@ MIM 能够自动地安装 OpenMMLab 的项目以及对应的依赖包。 # 安装 LVIS 数据集依赖 pip install git+https://github.com/lvis-dataset/lvis-api.git # 安装 albumentations 依赖 - pip install albumentations>=0.3.2 --no-binary imgaug,albumentations + pip install -r requirements/albu.txt ``` **注意:** @@ -153,7 +153,7 @@ MIM 能够自动地安装 OpenMMLab 的项目以及对应的依赖包。 (3) 一些安装依赖是可以选择的。例如只需要安装最低运行要求的版本,则可以使用 `pip install -v -e .` 命令。如果希望使用可选择的像 `albumentations` 和 `imagecorruptions` 这种依赖项,可以使用 `pip install -r requirements/optional.txt` 进行手动安装,或者在使用 `pip` 时指定所需的附加功能(例如 `pip install -v -e .[optional]`),支持附加功能的有效键值包括 `all`、`tests`、`build` 以及 `optional` 。 -(4) 如果希望使用 `albumentations`,我们建议使用 `pip install albumentations>=0.3.2 --no-binary imgaug,albumentations` 进行安装。 如果简单地使用 `pip install albumentations>=0.3.2` 进行安装,则会同时安装 `opencv-python-headless`(即便已经安装了 `opencv-python` 也会再次安装)。我们不允许同时安装 `opencv-python` 和 `opencv-python-headless`,因为这样可能会导致一些问题。更多细节请参考[官方文档](https://albumentations.ai/docs/getting_started/installation/#note-on-opencv-dependencies)。 +(4) 如果希望使用 `albumentations`,我们建议使用 `pip install -r requirements/albu.txt` 或者 `pip install -U albumentations --no-binary qudida,albumentations` 进行安装。 如果简单地使用 `pip install albumentations>=0.3.2` 进行安装,则会同时安装 `opencv-python-headless`(即便已经安装了 `opencv-python` 也会再次安装)。我们建议在安装 `albumentations` 后检查环境,以确保没有同时安装 `opencv-python` 和 `opencv-python-headless`,因为同时安装可能会导致一些问题。更多细节请参考[官方文档](https://albumentations.ai/docs/getting_started/installation/#note-on-opencv-dependencies)。 ### 只在 CPU 安装 diff --git a/requirements/albu.txt b/requirements/albu.txt new file mode 100644 index 00000000000..f421fbbdc47 --- /dev/null +++ b/requirements/albu.txt @@ -0,0 +1 @@ +albumentations>=0.3.2 --no-binary qudida,albumentations From d05543efb401cd9fc5bc3a84d2f848bbb66020d2 Mon Sep 17 00:00:00 2001 From: Kevin Ye Date: Thu, 17 Feb 2022 19:40:20 +0800 Subject: [PATCH 3/8] Create init_cfg.md --- docs/zh_cn/tutorials/init_cfg.md | 167 +++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 docs/zh_cn/tutorials/init_cfg.md diff --git a/docs/zh_cn/tutorials/init_cfg.md b/docs/zh_cn/tutorials/init_cfg.md new file mode 100644 index 00000000000..570116a552b --- /dev/null +++ b/docs/zh_cn/tutorials/init_cfg.md @@ -0,0 +1,167 @@ +# 教程 10: 权重初始化 + + + +在训练过程中,适当的初始化策略有利于加快训练速度或获得更⾼的性能。 [MMCV](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/weight_init.py) 提供了一些常⽤的初始化模块的⽅法,如 `nn.Conv2d`。 MMdetection 中的模型初始化主要使⽤ `init_cfg`。⽤⼾可以通过以下两个步骤来初始化模型: + +1. 在 `model_cfg` 中为模型或其组件定义 `init_cfg`,但⼦组件的 `init_cfg` 优先级更⾼,会覆盖⽗模块的 `init_cfg` 。 +2. 像往常一样构建模型,但显式调⽤ `model.init_weights()` ⽅法,并且模型参数将被初始化为配置。 + + + +MMdetection 中初始化的⾼级⼯作流程是: + +model_cfg(init_cfg) -> build_from_cfg -> model -> init_weight() -> initialize(self, self.init_cfg) -> children's init_weight() + +### 描述 + + + +它的数据类型是 dict 或者 list[dict],包含了下列键值: + +- `type` (str),包含 `INTIALIZERS` 中的初始化程序名称,后面跟着初始化程序的参数。 +- `layer`(str 或 list[str]),包含 Pytorch 或 MMCV 中基本层的名称,以及将被初始化的可学习参数,例如 `'Conv2d'`,`'DeformConv2d'`。 +- `override` (dict or list[dict]),包含不继承⾃ `BaseModule` 且其初始化配置与 `layer` 键中的其他层不同的⼦模块。 `type` 中定义的初始化器将适⽤于 `layer` 中定义的所有层,因此如果⼦模块不是 `BaseModule` 的派⽣类但可以与 `layer` 中的层相同的⽅式初始化,则不需要使⽤ `override`。`override` 包含了: + - `type` 后跟初始化器的参数; + - `name` 用以指⽰将被初始化的⼦模块。 + +### 初始化参数 + +从 `mmcv.runner.BaseModule` 或 `mmdet.models` 继承一个新模型。这里我们用 FooModel 来举个例子。 + +```python +import torch.nn as nn +from mmcv.runner import BaseModule + +class FooModel(BaseModule) + def __init__(self, + arg1, + arg2, + init_cfg=None): + super(FooModel, self).__init__(init_cfg) + ... +``` + +- 直接在代码中使⽤ `init_cfg` 初始化模型 + + ```python + import torch.nn as nn + from mmcv.runner import BaseModule + # or directly inherit mmdet models + + class FooModel(BaseModule) + def __init__(self, + arg1, + arg2, + init_cfg=XXX): + super(FooModel, self).__init__(init_cfg) + ... + ``` + +- 在 `mmcv.Sequential` 或 `mmcv.ModuleList` 代码中直接使⽤ `init_cfg` 初始化模型 + + ```python + from mmcv.runner import BaseModule, ModuleList + + class FooModel(BaseModule) + def __init__(self, + arg1, + arg2, + init_cfg=None): + super(FooModel, self).__init__(init_cfg) + ... + self.conv1 = ModuleList(init_cfg=XXX) + ``` + +- 使⽤配置⽂件中的 `init_cfg` 初始化模型 + + ```python + model = dict( + ... + model = dict( + type='FooModel', + arg1=XXX, + arg2=XXX, + init_cfg=XXX), + ... + ``` + +### init_cfg 的使用 + +1. 用 `layer` 键初始化模型 + + 如果我们只定义了 `layer`, 它只会在 `layer` 键中初始化网络层。 + + 注意: `layer` 键对应的值是 Pytorch 的带有 weights 和 bias 属性的类名(因此不⽀持 `MultiheadAttention` 层)。 + +- 定义⽤于初始化具有相同配置的模块的 `layer` 键。 + + ```python + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d', 'Linear'], val=1) + # ⽤相同的配置初始化整个模块 + ``` + +- 定义⽤于初始化具有不同配置的层的 `layer` 键。 + + ```python + init_cfg = [dict(type='Constant', layer='Conv1d', val=1), + dict(type='Constant', layer='Conv2d', val=2), + dict(type='Constant', layer='Linear', val=3)] + # nn.Conv1d 将被初始化为 dict(type='Constant', val=1) + # nn.Conv2d 将被初始化为 dict(type='Constant', val=2) + # nn.Linear 将被初始化为 dict(type='Constant', val=3) + ``` + +2. 使⽤ `override` 键初始化模型 + +- 当使⽤属性名初始化某些特定部分时,我们可以使⽤ `override` 键, `override` 中的值将忽略 init_cfg 中的值。 + + ```python + # layers: + # self.feat = nn.Conv1d(3, 1, 3) + # self.reg = nn.Conv2d(3, 3, 3) + # self.cls = nn.Linear(1,2) + + init_cfg = dict(type='Constant', + layer=['Conv1d','Conv2d'], val=1, bias=2, + override=dict(type='Constant', name='reg', val=3, bias=4)) + # self.feat and self.cls 将被初始化为 dict(type='Constant', val=1, bias=2) + # 叫 'reg' 的模块将被初始化为 dict(type='Constant', val=3, bias=4) + ``` + +- 如果 init_cfg 中的 `layer` 为 None,则只会初始化 override 中名称的⼦模块,⽽ override 中的 type 和其他参数可以省略。 + + ```python + # layers: + # self.feat = nn.Conv1d(3, 1, 3) + # self.reg = nn.Conv2d(3, 3, 3) + # self.cls = nn.Linear(1,2) + + init_cfg = dict(type='Constant', val=1, bias=2, override=dict(name='reg')) + + # self.feat and self.cls 将被 Pytorch 初始化 + # 叫 'reg' 的模块将被 dict(type='Constant', val=1, bias=2) 初始化 + ``` + +- 如果我们不定义 `layer` 或 `override` 键,它不会初始化任何东西。 + +- 无效的使用 + + ```python + # override 没有 name 键的话是无效的 + init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, + override=dict(type='Constant', val=3, bias=4)) + + # override 有 name 键和其他参数但是没有 type 键也是无效的 + init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, + override=dict(name='reg', val=3, bias=4)) + ``` + +3. 使⽤预训练模型初始化模型 + + ```python + init_cfg = dict(type='Pretrained', + checkpoint='torchvision://resnet50') + ``` + +更多细节可以参考 [MMCV](https://mmcv.readthedocs.io/en/latest/cnn.html#weight-initialization) 的文档和 MMCV [PR #780](https://github.com/open-mmlab/mmcv/pull/780) From 72cd48d212065168a4cad2701cef2be16d138d69 Mon Sep 17 00:00:00 2001 From: Kevin Ye <1752391457@qq.com> Date: Tue, 22 Feb 2022 13:16:52 +0800 Subject: [PATCH 4/8] Update docs/zh_cn/tutorials/init_cfg.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Haian Huang(深度眸) <1286304229@qq.com> --- docs/zh_cn/tutorials/init_cfg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/tutorials/init_cfg.md b/docs/zh_cn/tutorials/init_cfg.md index 570116a552b..949a8257e87 100644 --- a/docs/zh_cn/tutorials/init_cfg.md +++ b/docs/zh_cn/tutorials/init_cfg.md @@ -5,7 +5,7 @@ 在训练过程中,适当的初始化策略有利于加快训练速度或获得更⾼的性能。 [MMCV](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/weight_init.py) 提供了一些常⽤的初始化模块的⽅法,如 `nn.Conv2d`。 MMdetection 中的模型初始化主要使⽤ `init_cfg`。⽤⼾可以通过以下两个步骤来初始化模型: 1. 在 `model_cfg` 中为模型或其组件定义 `init_cfg`,但⼦组件的 `init_cfg` 优先级更⾼,会覆盖⽗模块的 `init_cfg` 。 -2. 像往常一样构建模型,但显式调⽤ `model.init_weights()` ⽅法,并且模型参数将被初始化为配置。 +2. 像往常一样构建模型,然后显式调⽤ `model.init_weights()` ⽅法,此时模型参数将会被按照配置文件写法进行初始化。 From 7883f5e8ce09b2c5d322cb353c7c02842b0f3c76 Mon Sep 17 00:00:00 2001 From: Kevin Ye Date: Tue, 22 Feb 2022 13:21:08 +0800 Subject: [PATCH 5/8] update init_cfg.md --- docs/zh_cn/tutorials/init_cfg.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/zh_cn/tutorials/init_cfg.md b/docs/zh_cn/tutorials/init_cfg.md index 570116a552b..2410928a349 100644 --- a/docs/zh_cn/tutorials/init_cfg.md +++ b/docs/zh_cn/tutorials/init_cfg.md @@ -1,7 +1,5 @@ # 教程 10: 权重初始化 - - 在训练过程中,适当的初始化策略有利于加快训练速度或获得更⾼的性能。 [MMCV](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/weight_init.py) 提供了一些常⽤的初始化模块的⽅法,如 `nn.Conv2d`。 MMdetection 中的模型初始化主要使⽤ `init_cfg`。⽤⼾可以通过以下两个步骤来初始化模型: 1. 在 `model_cfg` 中为模型或其组件定义 `init_cfg`,但⼦组件的 `init_cfg` 优先级更⾼,会覆盖⽗模块的 `init_cfg` 。 @@ -15,8 +13,6 @@ model_cfg(init_cfg) -> build_from_cfg -> model -> init_weight() -> initialize(se ### 描述 - - 它的数据类型是 dict 或者 list[dict],包含了下列键值: - `type` (str),包含 `INTIALIZERS` 中的初始化程序名称,后面跟着初始化程序的参数。 From c859af00058e9671f797bea3d478cf82677ccd5d Mon Sep 17 00:00:00 2001 From: Kevin Ye Date: Tue, 22 Feb 2022 13:31:11 +0800 Subject: [PATCH 6/8] update init_cfg.md --- docs/zh_cn/tutorials/init_cfg.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/zh_cn/tutorials/init_cfg.md b/docs/zh_cn/tutorials/init_cfg.md index e1337035cdd..33666ab9828 100644 --- a/docs/zh_cn/tutorials/init_cfg.md +++ b/docs/zh_cn/tutorials/init_cfg.md @@ -6,8 +6,7 @@ 2. 像往常一样构建模型,然后显式调⽤ `model.init_weights()` ⽅法,此时模型参数将会被按照配置文件写法进行初始化。 - -MMdetection 中初始化的⾼级⼯作流程是: +MMdetection 初始化工作流的高层 API 调用流程是: model_cfg(init_cfg) -> build_from_cfg -> model -> init_weight() -> initialize(self, self.init_cfg) -> children's init_weight() @@ -15,9 +14,9 @@ model_cfg(init_cfg) -> build_from_cfg -> model -> init_weight() -> initialize(se 它的数据类型是 dict 或者 list[dict],包含了下列键值: -- `type` (str),包含 `INTIALIZERS` 中的初始化程序名称,后面跟着初始化程序的参数。 +- `type` (str),包含 `INTIALIZERS` 中的初始化器名称,后面跟着初始化器的参数。 - `layer`(str 或 list[str]),包含 Pytorch 或 MMCV 中基本层的名称,以及将被初始化的可学习参数,例如 `'Conv2d'`,`'DeformConv2d'`。 -- `override` (dict or list[dict]),包含不继承⾃ `BaseModule` 且其初始化配置与 `layer` 键中的其他层不同的⼦模块。 `type` 中定义的初始化器将适⽤于 `layer` 中定义的所有层,因此如果⼦模块不是 `BaseModule` 的派⽣类但可以与 `layer` 中的层相同的⽅式初始化,则不需要使⽤ `override`。`override` 包含了: +- `override` (dict 或 list[dict]),包含不继承⾃ `BaseModule` 且其初始化配置与 `layer` 键中的其他层不同的⼦模块。 `type` 中定义的初始化器将适⽤于 `layer` 中定义的所有层,因此如果⼦模块不是 `BaseModule` 的派⽣类但可以与 `layer` 中的层相同的⽅式初始化,则不需要使⽤ `override`。`override` 包含了: - `type` 后跟初始化器的参数; - `name` 用以指⽰将被初始化的⼦模块。 @@ -125,7 +124,7 @@ class FooModel(BaseModule) # 叫 'reg' 的模块将被初始化为 dict(type='Constant', val=3, bias=4) ``` -- 如果 init_cfg 中的 `layer` 为 None,则只会初始化 override 中名称的⼦模块,⽽ override 中的 type 和其他参数可以省略。 +- 如果 init_cfg 中的 `layer` 为 None,则只会初始化 override 中有 name 的⼦模块,⽽ override 中的 type 和其他参数可以省略。 ```python # layers: From 12b8327f3323267dd6a3a0cf8037bdd2cac3b015 Mon Sep 17 00:00:00 2001 From: Kevin Ye Date: Tue, 22 Feb 2022 21:28:54 +0800 Subject: [PATCH 7/8] update init_cfg.md --- docs/zh_cn/tutorials/init_cfg.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/zh_cn/tutorials/init_cfg.md b/docs/zh_cn/tutorials/init_cfg.md index 33666ab9828..2bfd3d3984b 100644 --- a/docs/zh_cn/tutorials/init_cfg.md +++ b/docs/zh_cn/tutorials/init_cfg.md @@ -17,7 +17,7 @@ model_cfg(init_cfg) -> build_from_cfg -> model -> init_weight() -> initialize(se - `type` (str),包含 `INTIALIZERS` 中的初始化器名称,后面跟着初始化器的参数。 - `layer`(str 或 list[str]),包含 Pytorch 或 MMCV 中基本层的名称,以及将被初始化的可学习参数,例如 `'Conv2d'`,`'DeformConv2d'`。 - `override` (dict 或 list[dict]),包含不继承⾃ `BaseModule` 且其初始化配置与 `layer` 键中的其他层不同的⼦模块。 `type` 中定义的初始化器将适⽤于 `layer` 中定义的所有层,因此如果⼦模块不是 `BaseModule` 的派⽣类但可以与 `layer` 中的层相同的⽅式初始化,则不需要使⽤ `override`。`override` 包含了: - - `type` 后跟初始化器的参数; + - `type` 后跟初始化器的参数; - `name` 用以指⽰将被初始化的⼦模块。 ### 初始化参数 @@ -43,7 +43,7 @@ class FooModel(BaseModule) import torch.nn as nn from mmcv.runner import BaseModule # or directly inherit mmdet models - + class FooModel(BaseModule) def __init__(self, arg1, @@ -57,7 +57,7 @@ class FooModel(BaseModule) ```python from mmcv.runner import BaseModule, ModuleList - + class FooModel(BaseModule) def __init__(self, arg1, @@ -116,7 +116,7 @@ class FooModel(BaseModule) # self.feat = nn.Conv1d(3, 1, 3) # self.reg = nn.Conv2d(3, 3, 3) # self.cls = nn.Linear(1,2) - + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, override=dict(type='Constant', name='reg', val=3, bias=4)) @@ -131,9 +131,9 @@ class FooModel(BaseModule) # self.feat = nn.Conv1d(3, 1, 3) # self.reg = nn.Conv2d(3, 3, 3) # self.cls = nn.Linear(1,2) - + init_cfg = dict(type='Constant', val=1, bias=2, override=dict(name='reg')) - + # self.feat and self.cls 将被 Pytorch 初始化 # 叫 'reg' 的模块将被 dict(type='Constant', val=1, bias=2) 初始化 ``` @@ -146,7 +146,7 @@ class FooModel(BaseModule) # override 没有 name 键的话是无效的 init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, override=dict(type='Constant', val=3, bias=4)) - + # override 有 name 键和其他参数但是没有 type 键也是无效的 init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, override=dict(name='reg', val=3, bias=4)) From d4ec81700b8c988ccf313419180b98e5c8ccedfe Mon Sep 17 00:00:00 2001 From: Kevin Ye Date: Wed, 23 Feb 2022 20:51:38 +0800 Subject: [PATCH 8/8] update init_cfg.md --- docs/en/tutorials/init_cfg.md | 4 ++-- docs/zh_cn/tutorials/init_cfg.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en/tutorials/init_cfg.md b/docs/en/tutorials/init_cfg.md index 6fc837b638e..69300e66559 100644 --- a/docs/en/tutorials/init_cfg.md +++ b/docs/en/tutorials/init_cfg.md @@ -142,11 +142,11 @@ class FooModel(BaseModule) ```python # It is invalid that override don't have name key - init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, override=dict(type='Constant', val=3, bias=4)) # It is also invalid that override has name and other args except type - init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, override=dict(name='reg', val=3, bias=4)) ``` diff --git a/docs/zh_cn/tutorials/init_cfg.md b/docs/zh_cn/tutorials/init_cfg.md index 2bfd3d3984b..bb9d8ba9c49 100644 --- a/docs/zh_cn/tutorials/init_cfg.md +++ b/docs/zh_cn/tutorials/init_cfg.md @@ -144,11 +144,11 @@ class FooModel(BaseModule) ```python # override 没有 name 键的话是无效的 - init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, override=dict(type='Constant', val=3, bias=4)) # override 有 name 键和其他参数但是没有 type 键也是无效的 - init_cfg = dict(type='Constant', layer ['Conv1d','Conv2d'], val=1, bias=2, + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, override=dict(name='reg', val=3, bias=4)) ```