当前位置: 首页 > article >正文

BERT outputs

Yes so BERT (the base model without any heads on top) outputs 2 things: last_hidden_state and pooler_output.
是的,BERT(顶部没有任何头部的基础模型)输出 2 个东西: last_hidden_state 和 pooler_output 。

First question: 第一个问题:

last_hidden_state contains the hidden representations for each token in each sequence of the batch. So the size is (batch_size, seq_len, hidden_size).
last_hidden_state 包含批次中每个序列中每个标记的隐藏表示。因此大小为 (batch_size, seq_len, hidden_size) 。
pooler_output contains a “representation” of each sequence in the batch, and is of size (batch_size, hidden_size). What it basically does is take the hidden representation of the [CLS] token of each sequence in the batch (which is a vector of size hidden_size), and then run that through the BertPooler nn.Module. This consists of a linear layer followed by a Tanh activation function. The weights of this linear layer are already pretrained on the next sentence prediction task (note that BERT is pretrained on 2 tasks: masked language modeling and next sentence prediction). I assume that the authors of the Transformers library have taken the weights from the original TF implementation, and initialized the layer with them. In theory, they would come from BertForPretraining - which is BERT with the 2 pretraining heads on top.
pooler_output 包含批次中每个序列的“表示”,大小为 (batch_size, hidden_size) 。它的基本作用是获取批次中每个序列的 [CLS] 标记的隐藏表示(大小为 hidden_size 的向量),然后通过 BertPooler nn.Module 运行。这包括一个线性层,后跟一个 Tanh 激活函数。这个线性层的权重已经在下一个句子预测任务上进行了预训练(请注意,BERT 在 2 个任务上进行了预训练:掩码语言建模和下一个句子预测)。我假设 Transformers 库的作者已经从原始 TF 实现中获取了这个线性层的权重,并用它们初始化了该层。理论上,它们应该来自 BertForPretraining - 这是在顶部具有 2 个预训练头的 BERT。
Second question: 第二个问题:
Yes you can fine-tune them, just like the hidden states, because the weights of the linear layer are updated when you perform a loss.backward().
是的,您可以微调它们,就像隐藏状态一样,因为当您执行 loss.backward() 时,线性层的权重会被更新。

BTW, please ask questions related to BERT/other models (which are not related to bugs) on the forum, rather than posting them here.
顺便说一句,请在论坛上提出与 BERT/其他模型相关的问题(与错误无关),而不是在这里发布。


http://www.kler.cn/a/446679.html

相关文章:

  • harmony UI组件学习(1)
  • 【ETCD】【Linearizable Read OR Serializable Read】ETCD 数据读取:强一致性 vs 高性能,选择最适合的读取模式
  • [python SQLAlchemy数据库操作入门]-02.交易数据实体类建立
  • 【进程篇】操作系统
  • CSDN数据大屏可视化【开源】
  • 重拾设计模式--模板方法模式
  • webpack如何自定义插件?示例
  • 如何在 .NET Core 中轻松实现异步编程并提升性能
  • 大数据技术与应用——大数据处理技术(一)(山东省大数据职称考试)
  • 踩坑记录: Python的工作路径(working dircetory)
  • 基于STM32的自学习智能小车设计
  • 微信小程序实现上传图片自定义水印功能、放大缩小旋转删除、自定义字号颜色位置、图片导出下载、图像预览裁剪、Canvas绘制 开箱即用
  • 【深入理解网络协议】
  • 【学习总结|DAY020】Java FIle、字符集、IO流
  • WPF系列二:窗口模式调整
  • 什么是Edge SCDN?
  • Kibana8.17.0在mac上的安装
  • Midjourney制作APP logo教程
  • Ubuntu20.04 编译运行 ORBSLAM2_with_pointcloud_map(以RGBD Orbbec Astra+为例)保姆级教程
  • Http 中 GET 和 POST 的区别?应用场景都有哪些?
  • imu相机EKF
  • 【数据可视化案例】探索影响不同国家预期寿命的主要因素
  • Flutter:CustomScrollView自定义滚动使用
  • vue2,vue3 中 v-for 和v-if的优先级
  • 30.装饰器
  • 【Ubuntu】安装QQ