如果您已经遵循了“深度学习”中的一些最佳实践,那么Facebook的九头蛇可能是您熟悉的名称。通过九头蛇文件,我遇到了两个重要的运算符+和++。文件中提到这些运算符的使用情况如下:
Appending a config value : +foo.bar=value
Appending or overriding a config value : ++foo.bar=value我需要一些帮助来理解这些操作符,因为在代码中使用它们在技术上并没有影响整个输出。
发布于 2022-03-06 15:20:28
假设我们有以下简单的水力应用程序:
├── config.yaml
└── my_app.py# my_app.py
import hydra
from omegaconf import OmegaConf, DictConfig
@hydra.main(".", "config")
def app(cfg: DictConfig):
print(OmegaConf.to_yaml(cfg))
if __name__ == "__main__":
app()# config.yaml
a:
b: c$ python my_app.py
a:
b: c让我们看一下您链接的docs页面中的四种“修改Config对象”的方法:
foo.bar=value+foo.bar=value++foo.bar=value~foo.bar,~foo.bar=value$ python my_app.py a.b=y
a:
b: y$ python my_app.py a.x=y
Could not override 'a.x'.
To append to your config use +a.x=y
Key 'x' is not in struct
full_key: a.x
object_type=dict$ python my_app.py +a.b=y
Could not append to config. An item is already at 'a.b'.
Either remove + prefix: 'a.b=y'
Or add a second + to add or override 'a.b': '++a.b=y'
...$ python my_app.py +a.x=y
a:
b: c
x: y$ python my_app.py ++a.b=y
a:
b: y$ python my_app.py ++a.x=y
a:
b: c
x: y$ python my_app.py ~a.b
a: {}$ python my_app.py ~a.b=c
a: {}$ python my_app.py ~a.b=y
Could not delete from config. The value of 'a.b' is c and not y.
...$ python my_app.py ~a.x
Could not delete from config. 'a.x' does not exist.
...$ python my_app.py ~a.x=y
Could not delete from config. 'a.x' does not exist.概括地说:
foo.bar=value)。+foo.bar=value)仅在配置中未显示给定键时才能工作。++foo.bar=value),无论配置中是否存在密钥~foo.bar,~foo.bar=value)。https://datascience.stackexchange.com/questions/108753
复制相似问题