向翻译数据集添加一个键
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
.
我有一个 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
.