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