【发布时间】:2020-10-31 14:34:53
【问题描述】:
我已经按照(使用 Transformer 的文本分类)https://keras.io/examples/nlp/text_classification_with_transformer/ 中的说明实现了一个模型
我想访问特定示例的注意力值。
我知道注意力是在这一点附近计算的:
class TransformerBlock(layers.Layer):
[...]
def call(self, inputs, training):
attn_output = self.att(inputs)
attn_output = self.dropout1(attn_output, training=training)
out1 = self.layernorm1(inputs + attn_output)
ffn_output = self.ffn(out1)
ffn_output = self.dropout2(ffn_output, training=training)
return self.layernorm2(out1 + ffn_output)
[...]
embed_dim = 32 # Embedding size for each token
num_heads = 2 # Number of attention heads
ff_dim = 32 # Hidden layer size in feed forward network inside transformer
inputs = layers.Input(shape=(maxlen,))
embedding_layer = TokenAndPositionEmbedding(maxlen, vocab_size, embed_dim)
x = embedding_layer(inputs)
transformer_block = TransformerBlock(embed_dim, num_heads, ff_dim)
x = transformer_block(x)
x = layers.GlobalAveragePooling1D()(x)
x = layers.Dropout(0.1)(x)
x = layers.Dense(20, activation="relu")(x)
x = layers.Dropout(0.1)(x)
outputs = layers.Dense(2, activation="softmax")(x)
如果我这样做:
A=(model.layers[2].att(model.layers[1](model.layers[0]((X_train[0,:])))))
我可以检索一个大小为 maxlen xnum_heads 的矩阵。
我应该如何解释这些系数?
【问题讨论】:
标签: tensorflow keras nlp attention-model