我正在尝试使用http://universaldependencies.org/中可用的数据集以及tutorial之后的其他语言训练Google Syntaxnet模型。我编辑了syntaxnet/context.pbtxt
文件但当我尝试运行指南中提供的bazel's script
时出现以下错误:
syntaxnet/term_frequency_map.cc:62] Check failed: ::tensorflow::Status::OK() == (tensorflow::Env::Default()->NewRandomAccessFile(filename, &file)) (OK vs. Not found: brain_pos/greedy/0/label-map)
我的疑问是:我必须提供此文件以及其他文件,例如fine-to-universal.map
,tag-map
,word-map
等,否则列车步骤必须使用训练数据集?如果我必须提供它们,我该如何构建它们?
提前致谢
答案 0 :(得分:0)
我试图和你做同样的事情并遇到完全相同的错误。事实证明,我不小心删除了标志--compute_lexicon
。我想这个标志负责创建tag-map
,word-map
等。所以请确保--compute_lexicon
已启用。
答案 1 :(得分:0)
我得到了类似的错误,说实话我没有发现问题是什么,但是我使用这个link来学习培训和测试过程,它为培训提供了有用的文档。
您可能无法将培训,调整和测试数据集的格式从.conllu
更改为.conl
,或者培训shell可能会被--arg_prefix
,{{1}中提到的目录混淆}, - task_context甚至--output_path
答案 2 :(得分:0)
我记得一开始有类似的错误。您是否使用了“训练解析器”步骤1下的确切代码:本地预训练&#39 ;?因为你会注意到那里有一个未初始化的$ PARAMS变量,它应该代表训练有素的POS标记器的参数。当您训练一个标记器(参见同一教程的前面)时,它将在models / brain_pos / greedy / $ PARAMS中创建文件。我相信在你的情况下,这个$ PARAMS变量被解释为0并且脚本在brain_pos / greedy / 0中寻找训练有素的标记器,它显然没有找到。如果你只是在脚本的开头添加一行来指定训练标记器的参数(教程中的128-0.08-3600-0.9-0)它应该可以工作。
因此:
$PARAMS=128-0.08-3600-0.9-0
bazel-bin/syntaxnet/parser_trainer \
--arg_prefix=brain_parser \
--batch_size=32 \
--projectivize_training_set \
--decay_steps=4400 \
--graph_builder=greedy \
--hidden_layer_sizes=200,200 \
--learning_rate=0.08 \
--momentum=0.85 \
--output_path=models \
--task_context=models/brain_pos/greedy/$PARAMS/context \
--seed=4 \
--training_corpus=tagged-training-corpus \
--tuning_corpus=tagged-tuning-corpus \
--params=200x200-0.08-4400-0.85-4