向翻译数据集添加一个键

Adding a key to the Translation Dataset

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

是否有可能以一种不用作 "from" 输入的方式调用源的每一行相应的边界数据,从而连接起来,而是以一种允许我使用数据的方式层内改变能量面具?

我做了类似的事情。我认为您唯一缺少的是将 boundaries 添加到 TranslationDataset._collect_single_seq() 中的 targets

类似于:

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

您可能还必须在配置中将 boundaries 添加到 num_outputs(或 extern_data)。

引用为 data:boundaries 应该有效。

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