Модель поезда SyntaxNet
Я пытаюсь обучить модель Google Syntaxnet на другом языке, используя наборы данных, доступные по адресу http://universaldependencies.org/ и следуя этому руководству. Я редактировал 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
и так далее, или шаг поезда должен создать их, используя набор данных обучения? И если я должен предоставить их, как я могу их построить?
заранее спасибо
3 ответа
Я помню, что в начале у меня была похожая ошибка. Использовали ли вы точный код в разделе "Обучение парсера, шаг 1: локальная предварительная подготовка"? Поскольку вы заметите, что там есть неинициализированная переменная $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
Я пытаюсь сделать то же самое, что и вы, и столкнулся с точно такой же ошибкой. Оказалось, что я случайно убрал флаг --compute_lexicon
, Я полагаю, что этот флаг заботится о создании tag-map
, word-map
и т.д. Так что просто убедитесь, что --compute_lexicon
включен.
Ну, я получил похожую ошибку, и, честно говоря, я не выяснил, в чем была проблема, но я использовал эту ссылку, чтобы изучить процесс обучения и тестирования, и он предоставляет полезную документацию для обучения.
Вы не можете изменить формат обучающих, настраиваемых и тестовых наборов данных из .conllu
в .conl
или учебная оболочка может быть перепутана каталогами, которые упомянуты в --arg_prefix
, --output_path
, --task_context или даже --model_path