如何从 hydra 配置文件传递字典元素
How to pass dictionary elements from hydra config file
我正在尝试使用 hydra 实例化对象,我在配置文件中使用了 class torchio.transforms.RemapLabels
:
_target_: torchio.transforms.RemapLabels
问题是 torchio.transforms.RemapLabels
将字典元素作为输入,我如何从我的 hydra 配置文件中传递这些元素? (config.yaml
)?
我在实例化时遇到错误:
TypeError: Error instantiating 'torchio.transforms.preprocessing.label.remap_labels.RemapLabels' : __init__() missing 1 required positional argument: 'remapping'
重新映射标签的用法示例:
transform = torchio.RemapLabels({2:1, 4:3, 6:5, 8:7})
有两种选择:您可以将输入作为位置参数或命名参数传递。
在您的 yaml
文件中使用命名参数(a.k.a. 关键字参数):
_target_: torchio.transforms.RemapLabels
remapping:
2: 1
4: 3
6: 5
8: 7
masking_method: "Anterior"
或者,使用 json 风格的地图:
_target_: torchio.transforms.RemapLabels
remapping: {2: 1, 4: 3, 6: 5, 8: 7}
masking_method: "Anterior"
在您的 yaml
文件中使用位置参数:
_target_: torchio.transforms.RemapLabels
_args_:
- 2: 1
4: 3
6: 5
8: 7
- "Anterior"
或者,等价地:
_target_: torchio.transforms.RemapLabels
_args_:
- {2: 1, 4: 3, 6: 5, 8: 7}
- "Anterior"
有关详细信息,请参阅 Instantiating objects with Hydra 上的文档。
除了 Jasha 所说的之外,如果您要定位的 class 的构造函数手动检查其参数的类型 (if isinstance(remapping, dict):
)
那么您应该指示 Hydra 将配置数据转换为字典:
transform = hydra.utils.instantiate(config, _convert_="partial")
我正在尝试使用 hydra 实例化对象,我在配置文件中使用了 class torchio.transforms.RemapLabels
:
_target_: torchio.transforms.RemapLabels
问题是 torchio.transforms.RemapLabels
将字典元素作为输入,我如何从我的 hydra 配置文件中传递这些元素? (config.yaml
)?
我在实例化时遇到错误:
TypeError: Error instantiating 'torchio.transforms.preprocessing.label.remap_labels.RemapLabels' : __init__() missing 1 required positional argument: 'remapping'
重新映射标签的用法示例:
transform = torchio.RemapLabels({2:1, 4:3, 6:5, 8:7})
有两种选择:您可以将输入作为位置参数或命名参数传递。
在您的 yaml
文件中使用命名参数(a.k.a. 关键字参数):
_target_: torchio.transforms.RemapLabels
remapping:
2: 1
4: 3
6: 5
8: 7
masking_method: "Anterior"
或者,使用 json 风格的地图:
_target_: torchio.transforms.RemapLabels
remapping: {2: 1, 4: 3, 6: 5, 8: 7}
masking_method: "Anterior"
在您的 yaml
文件中使用位置参数:
_target_: torchio.transforms.RemapLabels
_args_:
- 2: 1
4: 3
6: 5
8: 7
- "Anterior"
或者,等价地:
_target_: torchio.transforms.RemapLabels
_args_:
- {2: 1, 4: 3, 6: 5, 8: 7}
- "Anterior"
有关详细信息,请参阅 Instantiating objects with Hydra 上的文档。
除了 Jasha 所说的之外,如果您要定位的 class 的构造函数手动检查其参数的类型 (if isinstance(remapping, dict):
)
那么您应该指示 Hydra 将配置数据转换为字典:
transform = hydra.utils.instantiate(config, _convert_="partial")