У меня есть вопросы о реализации Google Transformer здесь .
В функции train_step(input, tar)
: измерение inp
представляет собой тензор 256 * 40 итрансформатор возвращает тензор 256 * 39 * 8089. Является ли каждая строка в inp
предложением? Я ожидал, что Transformer возьмет пакет предложений (размер двумерной матрицы batch_size, в котором каждая строка является словом) и рассчитает весовые коэффициенты внимания и результаты сразу, а затем передаст их в декодер (см. здесь .). Однако я не вижу, чтобы это было реализовано в коде.
В функции train_step(input, tar)
: «предсказания» - это тензор 256 * 39 * 8089. Это [размер пакета, максимальное количество слов в предложении, целевой размер словаря]? Как функция loss_function рассчитывает потери, когда этот формат отличается от `` `tar_real``, который равен [256 * 39]?
В def evaluate(inp_sentence)
: Почему на каждой итерации он отправляет трансформатору весь вход энкодера? Я ожидаю, что кодер вычисляет вес внимания и выводит один раз, а затем внутри цикла for мы отправляем выходные данные о вниманиях и прогнозах.
Спасибо