2024-10-01 07:33:38 发布
网友
我正在我的parameters.yml中使用嵌套参数,并希望使用kedro runCLI命令的运行时参数覆盖这些参数:
parameters.yml
kedro run
train: batch_size: 32 train_ratio: 0.9 epochs: 5
以下内容似乎不起作用:
kedro run --params train.batch_size:64,train.epochs:50
历元和批大小的值来自parameters.yml。如何使用cli命令覆盖这些参数
我建议另一种方法。 我将run.py添加到我的Kedro项目文件中,并覆盖KedroContext和ConfigLoader
run.py
KedroContext
ConfigLoader
现在我可以在CLI中使用类似于kedro run .. params "train_kwargs_max_epochs:1"的东西,它将被转换为train_kwargs.max_epochs = 1
kedro run .. params "train_kwargs_max_epochs:1"
train_kwargs.max_epochs = 1
因此,我可以在管道中使用params:train_kwargs,并在节点中使用它初始化培训师:Trainer(**train_kwargs)
params:train_kwargs
Trainer(**train_kwargs)
如果有人对此感兴趣,我很乐意提供完整的源代码。 问题是当前代码与我客户的源代码深度集成,我需要时间将其分离并发布
附加参数通过kedro_cli.py中的load_context(Path.cwd(), env=env, extra_params=params)传递到KedroContext对象。在这里,您可以看到一个名为_split_params的回调(受保护)函数,它在:上拆分键值对
kedro_cli.py
load_context(Path.cwd(), env=env, extra_params=params)
_split_params
:
这个_split_params首先拆分逗号上的字符串(以获得多个参数),然后拆分冒号上的字符串。实际上,添加一个关于传递到extra_params中的内容的打印/日志语句将显示如下内容:
extra_params
{'train.batch_size': 64, 'train.epochs': 50}
我认为你有几个选择:
.
注意:这是在^{上测试的
NB2:kedro拆分嵌套参数的方法是使用context.py中的_get_feed_dict和_add_param_to_feed_dict函数。具体来说,_add_param_to_feed_dict是一个递归函数,它将字典解包并格式化为"{}.{}".format(key, value)。在我看来,你可以从这里使用逻辑
kedro
context.py
_get_feed_dict
_add_param_to_feed_dict
"{}.{}".format(key, value)
我建议另一种方法。 我将
run.py
添加到我的Kedro项目文件中,并覆盖KedroContext
和ConfigLoader
现在我可以在CLI中使用类似于
kedro run .. params "train_kwargs_max_epochs:1"
的东西,它将被转换为train_kwargs.max_epochs = 1
因此,我可以在管道中使用
params:train_kwargs
,并在节点中使用它初始化培训师:Trainer(**train_kwargs)
如果有人对此感兴趣,我很乐意提供完整的源代码。 问题是当前代码与我客户的源代码深度集成,我需要时间将其分离并发布
附加参数通过
kedro_cli.py
中的load_context(Path.cwd(), env=env, extra_params=params)
传递到KedroContext
对象。在这里,您可以看到一个名为_split_params
的回调(受保护)函数,它在:
上拆分键值对这个
_split_params
首先拆分逗号上的字符串(以获得多个参数),然后拆分冒号上的字符串。实际上,添加一个关于传递到extra_params
中的内容的打印/日志语句将显示如下内容:我认为你有几个选择:
kedro_cli.py
中的_split_params
中,以在.
字符上创建一个嵌套字典,该字符被传递到上述func中。我认为可以重用很多现有的逻辑李>注意:这是在^{上测试的
NB2:
kedro
拆分嵌套参数的方法是使用context.py
中的_get_feed_dict
和_add_param_to_feed_dict
函数。具体来说,_add_param_to_feed_dict
是一个递归函数,它将字典解包并格式化为"{}.{}".format(key, value)
。在我看来,你可以从这里使用逻辑相关问题 更多 >
编程相关推荐