Обучение пользовательскому набору данных с помощью переводческой модели

Запуск модели из коробки генерирует эти файлы в каталоге данных:

ls
dev-v2.tgz                            newstest2013.en
giga-fren.release2.fixed.en           newstest2013.en.ids40000
giga-fren.release2.fixed.en.gz        newstest2013.fr
giga-fren.release2.fixed.en.ids40000  newstest2013.fr.ids40000
giga-fren.release2.fixed.fr           training-giga-fren.tar
giga-fren.release2.fixed.fr.gz        vocab40000.from
giga-fren.release2.fixed.fr.ids40000  vocab40000.to

Чтение src translate.py:

https://github.com/tensorflow/models/blob/master/tutorials/rnn/translate/translate.py

tf.app.flags.DEFINE_string("from_train_data", None, "Training data.")
tf.app.flags.DEFINE_string("to_train_data", None, "Training data.")

Чтобы использовать мои собственные данные обучения, я создал данные, полученные от моих поездок и данных поездок, и добавьте свои собственные данные обучения в каждый из этих каналов, данные обучения содержатся в файлах mydata.from и mydata.to

my-to-train-data contains mydata.from
my-from-train-data contains mydata.to

Я не мог найти документацию о том, как использовать собственные данные обучения или какой формат он должен принять, поэтому я сделал вывод об этом из файла translate.py src и содержимого dir данных, созданного при выполнении перевода модели из коробки.

Содержание mydata.from:

 Is this a question

Содержание mydata.to:

 Yes!

Затем я пытаюсь обучить модель, используя:

python translate.py --from_train_data my-from-train-data --to_train_data my-to-train-data

Возврат с ошибкой:

tensorflow.python.framework.errors_impl.NotFoundError: my-from-train-data.ids40000

Появляется, мне нужно создать файл my-from-train-data.ids40000, что это должно быть? Есть ли пример того, как обучать эту модель с помощью пользовательских данных?

Ответ 1

голубого неба

Отличный вопрос, подготовка модели по вашим собственным данным намного интереснее, чем использование стандартных данных. Пример того, что вы можете добавить в терминал:

python translate.py --from_train_data mydatadir/to_translate.in --to_train_data mydatadir/to_translate.out --from_dev_data mydatadir/test_to_translate.in --to_dev_data mydatadir/test_to_translate.out --train_dir train_dir_model --data_dir mydatadir

В вашем примере что-то не так: вы не указываете на файл, а на папку. from_train_data всегда должен указывать на файл открытого текста, строки которого должны быть выровнены с файлами в файле to_train_data.

Также: как только вы запустите этот script с разумными данными (более одной строки;)), translate.py будет генерировать ваши идентификаторы (40 000, если from_vocab_size и to_vocab_size не установлены). Важно знать, что этот файл создается в папке, заданной data_dir... если вы не укажете один, это означает, что они сгенерированы в /tmp (я предпочитаю их в том же месте, что и мои данные).

Надеюсь, это поможет!

Ответ 2

Быстрый ответ на:

Появляется, мне нужно создать файл my-from-train-data.ids40000, что это должно быть? Есть ли пример того, как обучать эту модель с помощью пользовательских данных?

Да, что файл словака/слова файла отсутствует, который создается при подготовке к созданию данных.

Вот учебник из Документация Tesnorflow.

быстрый просмотр файлов и почему вас могут смутить файлы, выпущенные в сравнении с тем, что использовать:

  • python/ops/seq2seq.py: → Библиотека для построения моделей последовательности к последовательности.
  • models/rnn/translate/seq2seq_model.py: → Модель последовательности нейронной трансляции последовательности.
  • models/rnn/translate/data_utils.py: → Вспомогательные функции для подготовки данных перевода.
  • models/rnn/translate/translate.py: → Двоичный файл, который обучает и запускает модель перевода.

Для файла Tensorflow translate.py требуется несколько файлов, которые необходимо сгенерировать, когда вы используете свой собственный корпус для перевода.

  • Он должен быть выровнен, что означает: language line 1 in file 1. < > language line 1 file 2. Это позволяет модели делать кодирование и декодирование.

  • Вы хотите, чтобы Словарь был создан из набора данных, используя этот файл: Проверьте следующие шаги:

python translate.py --data_dir [your_data_directory] --train_dir [checkpoints_directory] --en_vocab_size=40000 --fr_vocab_size=40000

Внимание! Если размер Vocab ниже, измените это значение.

Здесь более длинное обсуждение tensorflow/issues/600

Если все остальное не удается, проверьте эту ByteNet реализацию в Tensorflow, которая также выполняет задачу перевода.