关于Attention机制

本文深入解析了Attention机制,包括其核心概念、操作流程及在不同场景下的应用,如Self-Attention和Multi-head Attention,并通过TensorFlow代码示例展示了Attention机制的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Attention机制,是根据目标给输入分配权重,并加权求和的操作。
标准的输入为三部分,即Query, Key, Value。(下面简写为Q,K,V)
标准的操作是根据Query和Key计算出一个score,并使用该score作为权重,对Value进行加权求和。
即 step1, score = F(Q, K)
step2, attention_weight = softmax(score)
step3, output = sum(attention_weight * V)

  • F是计算权重分数所使用的函数,根据不同的F会实现不同的Attention。比如tf2里的attention layer就是Dot-product attention。
  • 也可以使用Value作为Key,这样输入只需要Query和Value两部分。
  • 当Query,Key,Value全部来自同一个输入时,即为Self-Attention。
  • 当使用多个不同的F进行attention时,即为Multi-head attention。

下面以tf代码给出简单例子:

import tensorflow as tf
import numpy as np

# input as shape (batch_size, seq_len, embedding_size)
batch_size =10
seq_len = 20
embedding_size = 30
data =  tf.constant(np.random.rand(batch_size, seq_len, embedding_size), dtype=tf.float32)

attlayer = tf.keras.layers.Attention()

out = attlayer([data, data])

print(out.shape)
# (10, 20, 30)

Reference:
[1] https://www.tensorflow.org/api_docs/python/tf/keras/layers/Attention

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值