码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
transformer总结超详细代码篇
transformer 初版链接
attention 代码链接
attention 初版链接
引言:
本文为 transformer 代码篇,主要包含具体实现过程以及过程中遇到的具体细节问题以及实现问题,仅供参考,相关原理介绍可以参考上面链接。
代码部分是本人解读别人实现的代码,对一些作者认为不用注释但是新手又看不懂的个人理解,但是由于工程量确实很大也很复杂我只是想学习一下具体实现过程应付面试所以部分模块的优化代码以及最后的训练部分依然没有完全解析,以后对原理的进一步加深后再来完善
参考代码中参数的名称一开始我是按照自己的理解改变来了名称后来才发现是论文中就这么定义名字的,所以注意我的解析代码中参数名字可能有些混乱,主要是 src 用 input 代替,tgr 用 target 代替,d_model用 embed_dim代替等,每一个模块本文主要介绍需要注意的难点,相关api 用法链接有附上,放心使用
主要参考链接:
参考代码
解析较多
参考代码 2
多头注意力实现部分
从自注意力实现 --> 多头注意力实现,主要难理解的是各种维度的来回变化以及原理步骤的实现比较抽象,但是有个人的详细解析应该可以看懂
embeding 模块
主要是 embeding 方法的封装,有测试用例可以看下我的代码(比较简单)
encoder 模块
实现 encoder 侧 encoder block 结构连接以及block 内的计算(比较简单)
decoder 模块
decoder 中和 encoder 有很大一部分相似但是难点在于其中一个有掩码的多头实现和无掩码的多头的连接,相对复杂,但是比较抽象的掩码部分有测试例子
前馈神经网络模块
根据公式实现即可,公式也比较简单
位置 embeding 模块
这个位置编码的实现相对比较复杂,所以我通过注释相对比较详细的介绍了具体实现方法,注意要理解位置编码本身原理才更好理解代码实现,同样有测试例子
工具包模块
包含 block 堆叠方法的封装, Add & Norm 模块的实现,训练和评分模块的封装,动态更新学习率的实现(未看懂但是公式见下图),优化器的封装, 标签平滑(未看懂,一种正则方法),为看懂部分有测试用例可以辅助理解
整体模块封装
把上面所有的模块按照 transformer 的结构图封装
测试例子(没看懂比较抽象,但是进测试可以运行)
注: jupyter 文件是我测试使用,个人理解的注释以及api 使用的参考链接在这里面,py 文件是参考代码,因为 jupyter 稳健调用只能调py 稳健所以放在同一级目录下
结尾
这个代码的解析真的很费时间,但是确实对自己理解算法原理有很大帮助,实现的时候还是有很多优化的,这些优化还是算法独有的确实很深奥,仅供参考
代码地址:
github
相关阅读:
Vue项目实战——实现一个任务清单(学以致用,两小时带你巩固和强化Vue知识点)
选择远程办公,选择放弃远程办公
mysql中sql语法使用
算法-链表-反转链表
python制作小游戏之二2048第二部分
BlockingQueue(阻塞队列)详解
【微信小程序毕业设计源代码】最近开发的60个java+python微信小程序源码+毕业设计选题推荐
Python第五章 函数
任务调度器详解(FreeRTOS)
hive从入门到放弃(二)——DDL数据定义
原文地址:https://blog.csdn.net/Lian_Ge_Blog/article/details/133004380
最新文章
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
小工具
小游戏
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
京公网安备 11010502049817号