我想问是否有人知道如何在转换器模型中提供两个序列(多头注意力使其像交叉注意力一样工作(,我尝试了很多次,但不明白如何执行两种相同类型的输入(类型csv:数字数据,csv 128,32的维度,另一个相同(
Model = sequential()
Input1 = tf.keras.input(shape=[128,32])
Input2 = tf.keras.input(shape=[128,32])
Mha = tf.keras.layers.MultiheadAttention(num_heads=2)
Output_tensor = Mha(Input1,Input2)
Retune Model
这只是我从tensorflow中理解的一个伪代码,如果有人能提供一个更好的例子,这将非常有帮助,我正在尝试用多头注意力对两个输入执行交叉attenion
提前感谢
交叉关注的示例可以在API官方文档中找到。https://www.tensorflow.org/api_docs/python/tf/keras/layers/MultiHeadAttention
layer = MultiHeadAttention(num_heads=2, key_dim=2)
target = tf.keras.Input(shape=[8, 16])
source = tf.keras.Input(shape=[4, 16])
output_tensor, weights = layer(target, source,
return_attention_scores=True)
print(output_tensor.shape) # (None, 8, 16)
print(weights.shape) # (None, 2, 8, 4)
在MultiHeadAttention
的调用方法中,第一个参数target
是query,第二个参数source
是value,当key
是None(默认值(时,key和value是相同的。然后,当目标和来源相同时,这就是自我关注。