nlp - 如何使用源代码类 RobertaSelfAttention(nn.Module):
问题描述
我想从下面的代码中获取查询和密钥。这部分来自https://huggingface.co/transformers/_modules/transformers/models/roberta/modeling_roberta.html#RobertaModel最后,我想重现本文 中的图1 有人可以直观地说明他们如何会做吗?
class RobertaSelfAttention(nn.Module):
def __init__(self, config):
super().__init__()
if config.hidden_size % config.num_attention_heads != 0 and not hasattr(config, "embedding_size"):
raise ValueError(
f"The hidden size ({config.hidden_size}) is not a multiple of the number of attention "
f"heads ({config.num_attention_heads})"
)
self.num_attention_heads = config.num_attention_heads
self.attention_head_size = int(config.hidden_size / config.num_attention_heads)
self.all_head_size = self.num_attention_heads * self.attention_head_size
self.query = nn.Linear(config.hidden_size, self.all_head_size)
self.key = nn.Linear(config.hidden_size, self.all_head_size)
self.value = nn.Linear(config.hidden_size, self.all_head_size)
self.dropout = nn.Dropout(config.attention_probs_dropout_prob)
self.position_embedding_type = getattr(config, "position_embedding_type", "absolute")
if self.position_embedding_type == "relative_key" or self.position_embedding_type == "relative_key_query":
self.max_position_embeddings = config.max_position_embeddings
self.distance_embedding = nn.Embedding(2 * config.max_position_embeddings - 1, self.attention_head_size)
self.is_decoder = config.is_decoder
解决方案
推荐阅读
- c# - 无法使用 ID、XPath 和 CSS 选择器定位元素
- ios - iOS 13 firebase 不工作“请求超时”
- r - 将字符转换为变量名
- sql - 如何在主查询中循环 cte
- android - 如何像 RxJava1 那样在 RxJava2 中使用 Subject (AsyncSubject, BehaviorSubject...)?
- numpy - 计算向量的总和
- java - 哪个相当于 reactor.netty.http.server 包中的旧方法 startAndAwait?
- testing - 将自定义会话数据添加到 clojure 中的 jsoup POST 请求
- windows - SSL 上的窗口服务
- excel - 将网页数据导入 Excel