簡體   English   中英

Self-Attention 使用變壓器塊 keras

[英]Self-Attention using transformer block keras

我試圖了解新實現的keras變壓器 class: https://keras.io/examples/nlp/text_classification_with_transformer/

我看到首先嵌入文本,然后使用自注意力。 但是,如果我想使用除TokenAndPositionEmbedding之外的其他嵌入——例如,在我的情況下,我有預嵌入的句子並且喜歡對它們使用自我注意。

我不明白的是self.pos_emb的作用。 class TokenAndPositionEmbedding正在返回xpositions ,其中xtoken_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 用於分類目的?

如您所知,transformer 是基於大量具有殘差概念的Dense層的結構; 然而,這使得時間序列數據失去了時間依賴性 所以對於transformer,你需要找到 position ,你可以把它當作這個結構的附加信息,這樣它就不會錯過時間依賴性。 If you would like to understand it better by using keras, I will suggest the official tutorial written by Tensorflow: https://www.tensorflow.org/tutorials/text/transformer which details the things you would like to know.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM