Добавление ключа в набор данных перевода - PullRequest
1 голос
/ 19 сентября 2019

У меня есть TranslationDataset, и для SelfAttention я хочу закодировать границы слов в наборе данных, чтобы затем использовать их для ограничения того, насколько SelfAttention разрешено посещать.Мне удалось создать список с границами при чтении ввода в набор данных, добавив ключ «Границы» на карту _data.Проблема в том, как я могу использовать данные в моей конфигурации?Вызов данных: границы в конфигурации не работает (ключевые границы ошибок), добавление «границ»: «границ» в KeyMap приводит к ошибке Datafile not found boundaries.dev.

Можно ли вызывать данные соответствующих границ для каждой строки источников таким образом, чтобы они не использовались в качестве входных данных "от" и, таким образом, объединялись, а, скорее, позволяли мне использовать данные внутрислой для изменения энергетической маски?

1 Ответ

1 голос
/ 20 сентября 2019

Я сделал что-то подобное.Я думаю, единственное, чего вам не хватает, это добавить boundaries к targets в 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)

Возможно, вам также придется добавить boundaries до num_outputs (или extern_data) в конфигурации.

Ссылка на data:boundaries должна работать.

Я не получил ваш последний вопрос.Каждый слой может читать ваши данные через "from": "data:boundaries", что дает вам данные, которые вы добавили в TranslationDataset для каждого примера обучения.Тогда слой может использовать его для чего угодно, в принципе.Если есть слои, которые делают то, что вы хотите, используйте их, в противном случае добавьте новые или используйте EvalLayer.

...