我最近开始使用PyTorch的ML/DL。下面的pytorch示例解释了如何训练一个简单的模型来将德语翻译成英语。
https://pytorch.org/tutorials/beginner/torchtext_translation_tutorial.html
然而,我对如何使用该模型在自定义输入上运行推理感到困惑。据我目前所知:
1)我们需要使用torch.save()保存德语(输入)和英语(输出)的"vocab“,以便以后可以用来运行预测。
2)在对德语段落运行推理时,我们首先需要使用德语词汇文件将德语文本转换为张量。
3)上述张量将传递给模型的正向方法进行翻译
4)模型将再次返回目标语言的张量,即当前示例中的英语。
5)我们将使用第一步中保存的英语单词将该张量转换回英语文本。
问题:
1)如果上述理解是正确的,如果我们知道源语言和目标语言并具有相同的词汇文件,那么上述步骤是否可以作为在任何语言翻译模型上运行推理的通用方法?或者我们可以使用像spacy这样的第三方库提供的词汇?
2)如何将模型返回的输出张量转换回目标语言?我找不到任何关于如何做到这一点的例子。上面的博客解释了如何使用源语言词汇将输入文本转换为张量。
我可以很容易地找到图像/视觉模型的各种示例和详细解释,但对文本的解释不多。
发布于 2020-01-01 17:47:38
是的,在全球范围内,你所说的都是正确的,当然你可以使用任何词汇,例如spacy提供的词汇。要将张量转换为自然文本,最常用的技术之一是同时保留一个将索引映射到单词的字典和另一个将单词映射到索引的字典,下面的代码可以做到这一点:
tok2idx = defaultdict(lambda: 0)
idx2tok = {}
for seq in sequences:
for tok in seq:
if not tok in tok2idx:
tok2idx[tok] = index
idx2tok[index] = tok
index += 1
这里的序列是所有序列的列表(即数据集中的句子)。如果您只有一个单词或标记的列表,那么只需保留内部循环,就可以轻松地更改模型。
https://stackoverflow.com/questions/59549980
复制相似问题