AllenNLP—json&命令行&自定义模型—对应关系
dir
- package_name_father
- package_name_child
- __init__.py
- model.py
- package_name_child
- json
json
{
"type": "model-name"
}
model.py
from allennlp import AllenNLPClass
@AllenNLPClass.regester("model-name")
class ModelClass(AllenNLPClass):
...
__init__.py
from package_name_father.package_name_child.model import ModelClass
__all__ = ["ModelClass"]
详细内容推荐查询__init__.py的写法
command line
allennlp train -s path/to/save/model --include-package package_name_father.package_name_child path/of/json/file.json -f
–include-package需要定位到__init__.py所在的文件夹(包)
详细内容推荐查询allennlp命令行参数列表
思考
实际就是把自己写的类写入__init__.py中,变成导入包就可以导入所有类,这样–include-package时只需要写__init__.py所在的包位置即可一次性导入大量类,包括Embedder、Encoder、Model、Dataset等,都可以在json文件中直接调用相应的model-name