1

我有一个 TranslationDataset,对于 SelfAttention,我想将单词边界编码到数据集中,这样我就可以使用它们来限制 SelfAttention 允许参与的范围。在将输入读入数据集时,我能够生成一个带有边界的列表,将键“边界”添加到 _data 映射中。问题是,我现在如何在配置中实际使用数据?在配置中调用 data:boundaries 不起作用(关键错误边界),将 "boundaries":"boundaries" 添加到 KeyMap 会导致错误 Datafile not found bounds.dev。

是否可以以不用作“来自”输入并因此连接的方式调用源的每一行的相应边界数据,而是以允许我使用层内的数据来改变能量的方式面具?

4

1 回答 1

1

我做了类似的事情。我认为您唯一缺少的就是添加boundariestargets.TranslationDataset._collect_single_seq()

就像是:

targets = self._get_data(key=self._main_classes_key, line_nr=line_nr)
targets["boundaries"] = self._get_data(key="boundaries", line_nr=line_nr)

您可能还必须在配置中添加boundariesnum_outputsextern_data)。

参考data:boundaries应该工作。

我不明白你的最后一个问题。每个层都可以通过 读取您的数据"from": "data:boundaries",从而为您提供TranslationDataset为每个训练示例添加的数据。然后该层原则上可以将其用于任何事情。如果有层在做你想做的事情,请使用它们,否则实现新的或使用EvalLayer.

于 2019-09-20T09:28:37.590 回答