2016-05-20 8 views
1

Ich versuche, das Google Syntaxnet-Modell in einer anderen Sprache zu trainieren, indem ich die Datensätze nutze, die unter http://universaldependencies.org/ und nach dieser tutorial verfügbar sind. Ich habe die syntaxnet/context.pbtxt-Datei, aber wenn ich versuche, die bazel's script in der Führung ich folgende Fehlermeldung bekam vorgesehen auszuführen:Train SyntaxNet Modell

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) 

Mein Zweifel ist: Ich habe diese Datei zur Verfügung zu stellen und die anderen Dateien wie fine-to-universal.map, tag-map, word-map und so weiter oder der Zugschritt muss sie mit dem Trainingsdatensatz erstellen? Und wenn ich sie bereitstellen muss, wie kann ich sie bauen?

Vielen Dank im Voraus

Antwort

0

Ich versuche, die gleiche Sache wie Sie zu tun und lief in die exakt gleichen Fehler. Es stellte sich heraus, dass ich versehentlich die Flagge --compute_lexicon entfernt habe. Ich nehme an, dass diese Flagge dafür sorgt, dass tag-map, word-map usw. erstellt wird. Stellen Sie also sicher, dass --compute_lexicon aktiviert ist.

0

Nun, ich habe einen ähnlichen Fehler und um ehrlich zu sein habe ich nicht herausgefunden, was das Problem war, aber ich habe link verwendet, um den Trainings- und Testprozess zu lernen und es bietet nützliche Dokumentation für das Training.

Sie vielleicht nicht das Format der Ausbildung, Tuning und Testdatensätze aus .conllu zu .conl oder Training Shell vielleicht durch die Verzeichnisse verwechselt ändern, die in --arg_prefix erwähnt werden, --output_path, --task_context oder sogar --model_path

0

Ich erinnere mich, mit ein ähnlicher Fehler am Anfang. Haben Sie den genauen Code unter 'Training eines Parsers Schritt 1: Lokales Vortraining' verwendet? Weil Sie bemerken werden, dass dort eine nicht initialisierte $ PARAMS-Variable ist, die die Parameter Ihres trainierten POS-Taggers darstellen soll. Wenn Sie einen Tagger trainieren (siehe vorheriges Tutorial), erstellt er Dateien in models/brain_pos/greedy/$ PARAMS. Ich glaube, dass in diesem Fall diese $ PARAMS-Variable als 0 interpretiert wurde und das Skript nach einem trainierten Tagger in brain_pos/greedy/0 sucht, den es offensichtlich nicht findet. Wenn Sie am Anfang des Skripts nur eine Zeile hinzufügen, die die Parameter eines trainierten Taggers (128-0.08-3600-0.9-0 im Tutorial) angibt, sollte es funktionieren.

So:

$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