【发布时间】:2021-09-23 19:41:48
【问题描述】:
我使用.jsonnet 文件作为AllenNLP 模型配置的模板
我使用Optuna 包搜索超参数空间,并在每个步骤中使用建议的超参数评估该模板extVars。然后我训练一个模型并将其保存到档案中。
问题是,除了超参数之外,我的.jsonnet 配置的某些部分包括相对于extVar 变量(我的包内的一个目录)的文件路径。这些文件路径也会被渲染,最后我的model.tar.gz 中有绝对路径,这是错误的,因为它们甚至可能不存在于加载该存档的机器上
.jsonnet:
{
...
"train_data_path": std.extVar("TRAIN_DATA_PATH"),
"validation_data_path": std.extVar("VALID_DATA_PATH"),
...
}
rendered.json:
{
...
"train_data_path": "/home/user/datasets/train.json",
"validation_data_path": "/home/user/datasets/valid.json",
...
}
所以我想保存原始路径表达式并在加载时提供一个环境变量,但我还没有找到在 python 中序列化 .jsonnet 文件的方法,只有 .json
【问题讨论】:
-
我希望如果您将
TRAIN_DATA_PATH设置为相对路径,它在最终的 .json 文件中也是相对的。你没看到吗?
标签: python allennlp jsonnet optuna