我正在尝试使用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等,或者训练步骤必须使用训练数据集创建它们?如果我必须提供它们,我如何构建它们呢?
提前感谢
发布于 2016-06-06 14:55:35
我正试着做和你一样的事情,却遇到了完全相同的错误。事实证明,我不小心删除了标志--compute_lexicon。我认为这个标志负责创建tag-map、word-map等,所以只需确保启用了--compute_lexicon即可。
发布于 2016-06-09 02:57:57
嗯,我得到了一个类似的错误,老实说,我没有找出问题所在,但我使用了这个link来学习培训和测试过程,它为培训提供了有用的文档。
您可能不会将训练、调优和测试数据集的格式从.conllu更改为.conl,或者训练shell可能会被--arg_prefix、--output_path、--task_context甚至--model_path中提到的目录搞混
发布于 2016-07-08 18:23:14
我记得在一开始就有过类似的错误。您是否使用了“训练解析器步骤1:本地预训练”下的确切代码?因为你会注意到里面有一个未初始化的$PARAMS变量,它应该代表你训练过的POS机的参数。当你训练一个标记器(参见前面的教程)时,它会在model/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-4https://stackoverflow.com/questions/37350525
复制相似问题