问题描述
allennlp.common.checks.ConfigurationError: from_params was passed a `params` object that was not a `Params`. This probably indicates malformed parameters in a configuration file, where something that should have been a dictionary was actually a list, or something else. This happened when constructing an object of type <class 'allennlp.nn.initializers.InitializerApplicator'>.
AllenNlp,使用构造Model,Initializers的使用,如果Model中含有initializer的构造参数,如下
initializer: InitializerApplicator = InitializerApplicator(),
在json配置文件中,配置为
"initializer": [
[".*final_mlp.*weight", {"type": "xavier_uniform"}],
[".*final_mlp.*bias", {"type": "zero"}],
[".*weight_ih.*", {"type": "xavier_uniform"}],
[".*weight_hh.*", {"type": "orthogonal"}],
[".*bias_ih.*", {"type": "zero"}],
[".*bias_hh.*", {"type": "lstm_hidden_bias"}]
]
此时就会报题目中的错误,原因为initializer构造需要传入字典而不是列表,将配置文修改为
"initializer":{
"regexes": [
[".*final_mlp.*weight", {"type": "xavier_uniform"}],
[".*final_mlp.*bias", {"type": "zero"}],
[".*weight_ih.*", {"type": "xavier_uniform"}],
[".*weight_hh.*", {"type": "orthogonal"}],
[".*bias_ih.*", {"type": "zero"}],
[".*bias_hh.*", {"type": "lstm_hidden_bias"}]
]
}