transformer 初版链接
attention 代码链接
attention 初版链接
引言:
- 本文为 transformer 代码篇,主要包含具体实现过程以及过程中遇到的具体细节问题以及实现问题,仅供参考,相关原理介绍可以参考上面链接。
- 代码部分是本人解读别人实现的代码,对一些作者认为不用注释但是新手又看不懂的个人理解,但是由于工程量确实很大也很复杂我只是想学习一下具体实现过程应付面试所以部分模块的优化代码以及最后的训练部分依然没有完全解析,以后对原理的进一步加深后再来完善
- 参考代码中参数的名称一开始我是按照自己的理解改变来了名称后来才发现是论文中就这么定义名字的,所以注意我的解析代码中参数名字可能有些混乱,主要是 src 用 input 代替,tgr 用 target 代替,d_model用 embed_dim代替等,每一个模块本文主要介绍需要注意的难点,相关api 用法链接有附上,放心使用
主要参考链接:
参考代码
解析较多
参考代码 2
多头注意力实现部分
embeding 模块
encoder 模块
decoder 模块
前馈神经网络模块
位置 embeding 模块
工具包模块
- 包含 block 堆叠方法的封装, Add & Norm 模块的实现,训练和评分模块的封装,动态更新学习率的实现(未看懂但是公式见下图),优化器的封装, 标签平滑(未看懂,一种正则方法),为看懂部分有测试用例可以辅助理解

整体模块封装
测试例子(没看懂比较抽象,但是进测试可以运行)

- 注: jupyter 文件是我测试使用,个人理解的注释以及api 使用的参考链接在这里面,py 文件是参考代码,因为 jupyter 稳健调用只能调py 稳健所以放在同一级目录下

结尾
- 这个代码的解析真的很费时间,但是确实对自己理解算法原理有很大帮助,实现的时候还是有很多优化的,这些优化还是算法独有的确实很深奥,仅供参考
- 代码地址:github
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。