1

我正在尝试使用http://universaldependencies.org/上提供的数据集并按照本教程以不同的语言训练 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-mapword-map或者训练步骤必须使用训练数据集创建它们?如果我必须提供它们,我该如何构建它们?

提前致谢

4

3 回答 3

0

好吧,我遇到了类似的错误,老实说,我没有找出问题所在,但我使用此链接来学习培训和测试过程,它为培训提供了有用的文档。

您可能不会更改训练、调优和测试数据集的格式,.conllu或者训练 shell 可能会被、、 --task_context.conl中提到的目录甚至混淆--arg_prefix--output_path--model_path

于 2016-06-08T18:57:57.437 回答
0

我正在尝试和您做同样的事情,但遇到了完全相同的错误。原来是我不小心把flag去掉了--compute_lexicon。我想这个标志负责创建tag-mapword-map。所以只要确保--compute_lexicon启用它。

于 2016-06-06T06:55:34.860 回答
0

我记得一开始也有类似的错误。您是否使用了“训练解析器步骤 1:本地预训练”下的确切代码?因为您会注意到那里有一个未初始化的 $PARAMS 变量,它应该代表您训练的 POS 标记器的参数。当您训练一个标注器时(参见同一教程的前面部分),它将在模型/brain_pos/greedy/$PARAMS 中创建文件。我相信在你的情况下,这个 $PARAMS 变量被解释为 0 并且脚本正在寻找一个训练有素的 tagger 在 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
于 2016-07-08T10:23:13.567 回答