我正在使用 syntaxnet存储库中提供的demo.sh。如果我用'\n'分隔输入,运行 3000 行文本需要 27.05 秒,但是当我单独运行每一行时,需要一个多小时。
这意味着加载模型需要 2.5 秒以上。如果把这一步分开,并且已经兑现,那会让整个流水线变得更快。
这是 demo.sh 的修改版本:-
PARSER_EVAL=bazel-bin/syntaxnet/parser_eval
MODEL_DIR=syntaxnet/models/parsey_mcparseface
[[ "$1" == "--conll" ]] && INPUT_FORMAT=stdin-conll || INPUT_FORMAT=stdin
$PARSER_EVAL \
--input=$INPUT_FORMAT \
--output=stdout-conll \
--hidden_layer_sizes=64 \
--arg_prefix=brain_tagger \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/tagger-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
| \
$PARSER_EVAL \
--input=stdin-conll \
--output=stdout-conll \
--hidden_layer_sizes=512,512 \
--arg_prefix=brain_parser \
--graph_builder=structured \
--task_context=$MODEL_DIR/context.pbtxt \
--model_path=$MODEL_DIR/parser-params \
--slim_model \
--batch_size=1024 \
--alsologtostderr \
我想构建一个函数调用,它将接受输入语句并使用存储在局部变量中的依赖解析器给出输出,如下所示(下面的代码只是为了让问题更清楚)
dependency_parsing_model = ...
def give_dependency_parser(sentence,model=dependency_parsing_model):
...
#logic here
...
return dependency_parsing_output
在上面,模型存储在一个变量中,因此在函数调用中运行每一行所需的时间更少。
这个怎么做 ?