Самовнимание с помощью трансформаторного блока keras - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь понять недавно реализованный класс трансформатора keras: https://keras.io/examples/nlp/text_classification_with_transformer/

Я вижу, что сначала встраивается текст, а затем используется самовнимание. Но что, если я хочу использовать другое встраивание, кроме TokenAndPositionEmbedding - например, в моем случае у меня есть предварительно встроенные предложения, и я люблю использовать на них самовнимание.

Я не понимаю, что это за self.pos_emb делает. Класс TokenAndPositionEmbedding возвращает x и positions, где x - это token_embedding, а positions - количество слов, которые следует учитывать? Значит, он в основном возвращает две вещи? Я не понимаю, что ..

class TokenAndPositionEmbedding(layers.Layer):
    def __init__(self, maxlen, vocab_size, emded_dim):
        super(TokenAndPositionEmbedding, self).__init__()
        self.token_emb = layers.Embedding(input_dim=vocab_size, output_dim=emded_dim)
        self.pos_emb = layers.Embedding(input_dim=maxlen, output_dim=emded_dim)

    def call(self, x):
        maxlen = tf.shape(x)[-1]
        positions = tf.range(start=0, limit=maxlen, delta=1)
        positions = self.pos_emb(positions)
        x = self.token_emb(x)
        return x + positions

Или мне просто передать свои встроенные предложения в MultiHeadSelfAttention и поставить после него Dense-Layer для целей классификации?

1 Ответ

1 голос
/ 27 мая 2020

Как вы знаете, трансформатор - это структура, основанная только на множестве Dense слоев с концепциями остатка; однако при этом данные временного ряда теряют свою временную зависимость . Таким образом, для трансформатора вам нужно найти позицию , которую вы можете рассматривать как дополнительную информацию для этой структуры, чтобы она не пропустила временную зависимость. Если вы хотите лучше понять это, используя keras, я предлагаю официальное руководство , написанное Tensorflow: https://www.tensorflow.org/tutorials/text/transformer, в котором подробно описаны вещи, которые вы хотели бы знать.

...