使用翻译模型训练自定义数据集
Training custom dataset with translate model
运行 开箱即用的模型在数据目录中生成这些文件:
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
正在读取 translate.py 的 src :
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.")
为了利用我自己的训练数据,我创建了 my-from-train-data 和 to-from-train-data 目录,并将我自己的训练数据添加到每个目录中,训练数据包含在文件中 mydata.from & mydata.to
my-to-train-data contains mydata.from
my-from-train-data contains mydata.to
我找不到关于使用自己的训练数据或应该采用什么格式的文档,所以我从 translate.py src 和开箱即用的翻译模型时创建的数据目录的内容中推断出这一点。
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
这个 returns 有一个错误:
tensorflow.python.framework.errors_impl.NotFoundError: my-from-train-data.ids40000
看来我需要创建文件 my-from-train-data.ids40000 ,它的内容应该是什么?是否有使用自定义数据训练此模型的示例?
blue-sky
问得好,用自己的数据训练模型比使用标准数据有趣得多。您可以在终端中输入的示例是:
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 文件中的行对齐。
另外:一旦你 运行 这个脚本带有合理的数据(不止一行 ;)),translate.py 将生成你的 ID(如果 from_vocab_size 和 [= 则为 40.000 28=] 未设置)。重要的是要知道这个文件是在 data_dir 指定的文件夹中创建的...如果你没有指定一个,这意味着它们是在 /tmp 中生成的(我更喜欢它们和我的数据在同一个地方)。
希望对您有所帮助!
快速回答:
Appears I need to create file my-from-train-data.ids40000 , what should it's contents be ? Is there an example of how to train this model using custom data ?
是的,就是vocab/word-id文件丢失了,是准备创建数据时生成的
这是来自 Tesnorflow documentation 的教程。
快速 over-view 文件以及为什么您可能会对输出的文件与使用的文件感到困惑:
python/ops/seq2seq.py
:>> 用于构建 sequence-to-sequence 模型的库。
models/rnn/translate/seq2seq_model.py
:>>神经翻译sequence-to-sequence模型。
models/rnn/translate/data_utils.py
: >> 准备翻译数据的辅助函数。
models/rnn/translate/translate.py
:>> 训练和运行翻译模型的二进制文件。
Tensorflowtranslate.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-size 较低,则更改该值。
这里有更长的讨论tensorflow/issues/600
如果一切都失败了,请查看 Tensorflow 中的这个 ByteNet 实现,它也可以执行翻译任务。
运行 开箱即用的模型在数据目录中生成这些文件:
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
正在读取 translate.py 的 src :
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.")
为了利用我自己的训练数据,我创建了 my-from-train-data 和 to-from-train-data 目录,并将我自己的训练数据添加到每个目录中,训练数据包含在文件中 mydata.from & mydata.to
my-to-train-data contains mydata.from
my-from-train-data contains mydata.to
我找不到关于使用自己的训练数据或应该采用什么格式的文档,所以我从 translate.py src 和开箱即用的翻译模型时创建的数据目录的内容中推断出这一点。
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
这个 returns 有一个错误:
tensorflow.python.framework.errors_impl.NotFoundError: my-from-train-data.ids40000
看来我需要创建文件 my-from-train-data.ids40000 ,它的内容应该是什么?是否有使用自定义数据训练此模型的示例?
blue-sky
问得好,用自己的数据训练模型比使用标准数据有趣得多。您可以在终端中输入的示例是:
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 文件中的行对齐。
另外:一旦你 运行 这个脚本带有合理的数据(不止一行 ;)),translate.py 将生成你的 ID(如果 from_vocab_size 和 [= 则为 40.000 28=] 未设置)。重要的是要知道这个文件是在 data_dir 指定的文件夹中创建的...如果你没有指定一个,这意味着它们是在 /tmp 中生成的(我更喜欢它们和我的数据在同一个地方)。
希望对您有所帮助!
快速回答:
Appears I need to create file my-from-train-data.ids40000 , what should it's contents be ? Is there an example of how to train this model using custom data ?
是的,就是vocab/word-id文件丢失了,是准备创建数据时生成的
这是来自 Tesnorflow documentation 的教程。
快速 over-view 文件以及为什么您可能会对输出的文件与使用的文件感到困惑:
python/ops/seq2seq.py
:>> 用于构建 sequence-to-sequence 模型的库。models/rnn/translate/seq2seq_model.py
:>>神经翻译sequence-to-sequence模型。models/rnn/translate/data_utils.py
: >> 准备翻译数据的辅助函数。models/rnn/translate/translate.py
:>> 训练和运行翻译模型的二进制文件。
Tensorflowtranslate.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-size 较低,则更改该值。
这里有更长的讨论tensorflow/issues/600
如果一切都失败了,请查看 Tensorflow 中的这个 ByteNet 实现,它也可以执行翻译任务。