Bert源码解读

本文深入探讨Transformer的实现细节,包括Q、K、V的设计,并解析Bert在TensorFlow 2.4.1中的源码实现,涉及预训练数据创建、注意力机制和预训练模型的训练过程。
摘要由CSDN通过智能技术生成

Transformer

讲的最好的一篇(我认为) 用pytorch一步步实现

  • 他的multihead应该是错的,不应该吧embediing分开,而应该有多个Q,K,V
    在这里插入图片描述
    错误解决方案请看这篇或者中文版,并且讲述了bert,吧所有head的output拼在一起,并训练 W o W_o Wo使其回归到原来的大小
    attention的输出是每一个词的embedding,somehow有其他词的attention。每个词是v1*attention_v1 + v2*attention_v2 …

第一层attention的每个词size都是embedding,其余的都是num_attention_heads
* size_per_head
The feed-forward layer is not expecting eight matrices

  • 不完全是,Bert里面就没有进行“压缩”。 不一定需要 W o W^o Wo

Q和K长度要一致,V不一定

Bert

在这里插入图片描述

本篇基于tensorflow.2.4.1, 源码在library里面
直接看github上的源码, from Google-research
首先看前两个argument,from_tensorto_tensor. 可以吧第一个理解为input句子,

  • from_tensor 和 to_tensor
    • batch_size: 多少个句子
    • from_seq_length(每个句子多少个单词),
    • from_width: 每个单词的长度*head的数量
    • 源码其实已经压缩成了2d tensor, 为了方便矩阵相乘(line 823)

Bert只用self-attention, 在833行可以看到

          attention_head = attention_layer(
              from_tensor=layer_input,
              to_tensor=layer_input

两行的input是一样的

W Q , W K , W V W^Q, W^K, W^V WQ,WK,WV在line 666-687被定义

  query_layer = tf.layers.dense(
      from_tensor_2d,
      num_attention_heads * size_per_head,
      activation=query_act,
      name="query",
      kernel_initializer=create_initializer(initializer_range))
      ...

接下来算attention
A t t e n t i o n ( Q , K , V ) = softmax ( Q K T d k ) V Attention(Q, K, V ) = \text{softmax}(\frac{QK^T}{ \sqrt d_k} )V Attention(Q,K,V)=softmax(d

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
知识图谱BERT源码是指实现了BERT模型的代码。BERT(Bidirectional Encoder Representations from Transformers)是由Google研究团队开发的一种自然语言处理模型。它基于Transformer架构,具有双向编码能力,能够更好地理解和表达句子的语义。 知识图谱BERT源码的主要作用是实现BERT模型的训练和预测功能。通过预训练数据和任务特定数据的训练,BERT模型能够提取出句子中的语义信息,并生成句子的表示向量。这些表示向量可以用于各种自然语言处理任务,如文本分类、命名实体识别和句子相似度计算等。 知识图谱BERT源码的实现通常基于深度学习框架,如TensorFlow或PyTorch。它主要包括模型的网络结构定义、损失函数的定义以及训练和预测的代码逻辑。在训练阶段,源码会加载预训练的BERT模型参数,并根据具体的任务数据进行微调。在预测阶段,源码会根据输入的文本,通过前向传播得到句子的表示向量,并根据具体任务的需求,进行相应的后续处理。 知识图谱BERT源码的使用需要一定的编程知识和对深度学习的理解。使用者可以根据自身的需求进行源码的修改和扩展,以适应不同的任务和数据。此外,为了获得更好的性能和效果,使用者还需要对模型的超参数进行调优,如学习率、批量大小等。 总之,知识图谱BERT源码是实现BERT模型的代码,它可以用于训练和预测自然语言处理任务,帮助我们更好地理解和处理文本数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值