Я работаю над применением преобразователя для выполнения каких-либо символов c перевод / краткое изложение представления на уровне символов.
Чтобы привести простой пример, я хотел бы научить модель изучать удалить повторяющиеся буквы, например, caaat -> cat.
Как таковые, входные и выходные последовательности имеют разные размеры, и это невозможно знать заранее. Мне интересно, понял ли я, как трансформатор правильно это обрабатывает.
Это формат, который я сейчас даю трансформатору для обучения
- входной кодировщик:
'caaat'
- входной декодер:
'<null>cat<eos>'
- ожидаемый вывод:
cat<eos>
Эти входные данные даны как одно горячее вложение каждого символа, поэтому число функций равно размер алфавита + теги, а длина последовательности - это количество символов.
Маска по умолчанию (square_subfter_mask) используется для ввода кодера и декодера, чтобы скрыть все будущие символы.
Исходное значение <null>
- это смещение цели (в противном случае я бы дал ответ в качестве ввода). Мне интересно, если это правильный путь, или я делаю что-то не так, поскольку он застревает и выводит оптимальную базовую ставку, если ничего не было извлечено.