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

annotated-transformer-master复现注意点

最近复习了transformer但感觉之前都是看一小部分源码 或者模棱两可的去学习,最近终于有时间看一下2000行的比较完整的github开源项目:Transformer-pytorch版本

说一下心得体会,代码有一些问题和不合理的地方(可能只是我没理解):

1.LayerNorm位置有些提前 应该放后面一些

2.在进行KL求损失的时候 我们的预测概率可能有的是0 log之后变成-inf 这样会报错

我的做法是把-inf变成-1e10 

x = torch.where(torch.isinf(x), torch.tensor(-1e10, dtype=x.dtype), x)

3.感觉教程应该先训练一下 再看那个贪婪解码 导致我最开始不知道那个掩码有什么作用

直到看到训练的时候 才了解到我输入的target是完整的 是模拟自回归而不是真正的自回归

每一行数据是一个单独batch对应预测的词进行损失计算。而我们在采样的时候才是真正的自回归

每次把预测到的词放到后面然后这时候感觉掩码就没什么作用。只是为了一致性

4.关于mask掩码src_mask 和tgt_mask 的维度一定要自己去debug看 为什么要这么设置 否则只会云里雾里。

5.由于包的更新过快torch torchtext torchdata会不兼容 我用了cpu的torch 再把源码中一些cuda的代码注释就好了 或者老版本的GPU应该也可以不过我没尝试

6.一些代码和论文不太一样比如Norm的顺序 还有位置编码的函数 但是无伤大雅

6.文中关于一些没讲到的知识:

BPE:这个很推荐huggingface 的nlp课程 里面很详细的讲解了BPE算法(OpenAI) WorldPiece(Bert)Unigram(T5,Bart)三种主流的分词算法 讲的很好

集束搜索:吴恩达老师的深度学习课程有讲的很好可以去b站搜

模型权重平均:让鲁棒性更好

7.突然想起来还有一个难点:spacy库en需要自己去github下载还有那个德语数据集 有问题 直接解包会报错 需要自己去github搜第三方 然后自己去解压!!! 不要让python去解压 否则会报utf-8的错误

8.平滑化标签 防止模型过拟合 增强鲁棒性 就是把标签权重由独热编码变平均一些

9.分布式训练应该挺重要 但我没看

9.warmup代表学习率预热

10.学习率函数是自己定义的

11.构建Batch tgt和tgt_y很重要

还有很多很多细节只有看源码才会知道。

nlp任重道远 加油加油!!!

相关文章:

  • 20250407在荣品的PRO-RK3566开发板适配Rockchip原厂的buildroot系统【使用荣品的DTS】
  • TDengine 与 taosAdapter 的结合(一)
  • JBDC Java数据库连接(1)
  • windows设置在终端中打开
  • JavaScript双问号操作符(??)详解,解决使用 || 时因类型转换带来的问题
  • 【微服务架构】SpringSecurity核心源码剖析+jwt+OAuth(二):SpringSecurity的源码初探(核心组件、认证流程)
  • 第一部分——Docker篇 第一章 Docker容器
  • 前缀和和差分笔记
  • Notepad++插件:快捷键交换两个选区的内容
  • 【微服务架构】SpringSecurity核心源码剖析+jwt+OAuth(一):SpringSecurity的初次邂逅(概念、认证、授权)
  • 用AbortController取消事件绑定
  • 记录学习的第二十一天
  • 4.1论文阅读
  • 线程池/内存池/mysql连接池
  • Linux文件系统中的Page Cache和内存管理中的Page之间的关系
  • 2025年国产AI编码助手及国内首款AI原生IDE TRAE
  • 1. Qt信号与槽
  • 【redis】消息通信-pubsub-blockinglist-stream-对比
  • [原创](Modern C++)现代C++的关键性概念: 什么是左值引用? 什么是右值引用?
  • NO.70十六届蓝桥杯备战|基础算法-分治|逆序对|求第k小的数|最大子段和|地毯填补问题(C++)
  • android开发者官网/深圳网站设计专家乐云seo
  • 2021跨境电商最火的产品/优化网站seo公司
  • 石家庄网站建设推广公司报价/seo怎么做?
  • 域名弄好了网站怎么建设/广告平台有哪些
  • 会员管理系统代码/品牌搜索引擎服务优化
  • 物流网站怎么做/营销策划方案ppt模板