![](/img/trans.png)
[英]How visualize attention LSTM using keras-self-attention package?
[英]Self-Attention using transformer block keras
我试图了解新实现的keras
变压器 class: https://keras.io/examples/nlp/text_classification_with_transformer/
我看到首先嵌入文本,然后使用自注意力。 但是,如果我想使用除TokenAndPositionEmbedding
之外的其他嵌入——例如,在我的情况下,我有预嵌入的句子并且喜欢对它们使用自我注意。
我不明白的是self.pos_emb
的作用。 class 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 用于分类目的?
如您所知,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.