有没有人知道一种为张量生成“段标签”的方法,给定一个表示张量内段边界的唯一值?
例如,给定一个 1D 输入张量,其中值1
表示段边界,
x = torch.Tensor([5, 4, 1, 3, 6, 2])
生成的段标签张量应该具有相同的形状,其值代表两个段:
segment_label = torch.Tensor([1, 1, 1, 2, 2, 2])
同样,对于一批输入,例如批量大小 = 3,
x = torch.Tensor([
[5, 4, 1, 3, 6, 2],
[9, 4, 5, 1, 8, 10],
[10, 1, 5, 4, 8, 9]
])
生成的段标签张量(1
用作段分隔符)应如下所示:
segment_label = torch.Tensor([
[1, 1, 1, 2, 2, 2],
[1, 1, 1, 1, 2, 2],
[1, 1, 2, 2, 2, 2]
])
上下文:我目前正在 PyTorch 中使用 Fairseq 的 Transformer 实现来完成 seq2seq NLP 任务。我正在寻找一种在编码器前向传递期间将类似 BERT 的片段嵌入合并到 Transformer 中的方法,而不是修改用于翻译任务的现有数据集,例如language_pair_dataset
.
提前致谢!