Transformer 零基础解析教程,完整版代码最终挑战(4/4)
导航
这篇文章是 Transformer
完整版复现代码的深度解析。
本博客的 Transformer 系列文章共计四篇,导航如下:
Transformer
零基础解析教程,从Encoder-Decoder架构说起(1/4)
Transformer
零基础解析教程,剥洋葱般层层剖析内在原理(2/4)
Transformer
零基础解析教程,牛刀小试Pytorch简易版攻略(3/4)
Transformer
零基础解析教程,完整版代码最终挑战(4/4)本篇
前言
由哈佛的NLP组撰写的 The
Annotated Transformer,用代码对应论文《Attention is all you
need》的各个部分基本复现和还原了论文模型中初始版本的
Transformer,并给出了两个机器翻译的例子。而本文内容是在 The Annotated
Transformer 的 Colab 版基础上,进一步精读 《Attention is all you
need》中的 Transformer
结构和源码。作者之所以选择它进行解读,是因为它 ...
Transformer 零基础解析教程,牛刀小试Pytorch简易版攻略(3/4)
导航
这篇文章是基于 Pytorch 的 Transformer
简易版复现教程。
本博客的 Transformer 系列文章共计四篇,导航如下:
Transformer
零基础解析教程,从Encoder-Decoder架构说起(1/4)
Transformer
零基础解析教程,剥洋葱般层层剖析内在原理(2/4)
Transformer
零基础解析教程,牛刀小试Pytorch简易版攻略(3/4)本篇
Transformer
零基础解析教程,完整版代码最终挑战(4/4)
前言
该教程代码初始来源于Jeff
Jung,我阅读了一些博客和视频后做了大量的注释和修改,更加方便阅读和复现。
代码中为了加快可读性和运行速度,并没有用到大型的数据集,而是手动输入了两对中文→英语的句子,还有每个字的索引也是手动硬编码上去的,主要是为了降低代码执行速度和阅读难度,哪怕用普通的笔记本CPU也能在1分钟以内完成,从而方便读者把重点放到模型实现的部分!
# ======================================""&qu ...
Transformer 零基础解析教程,剥洋葱般层层剖析内在原理(2/4)
导航
这篇文章是关于Transformer的原理详细解读。
本博客的 Transformer 系列文章共计四篇,导航如下:
Transformer
零基础解析教程,从Encoder-Decoder架构说起(1/4)
Transformer
零基础解析教程,剥洋葱般层层剖析内在原理(2/4)本篇
Transformer
零基础解析教程,牛刀小试Pytorch简易版攻略(3/4)
Transformer
零基础解析教程,完整版代码最终挑战(4/4)
Transformer之前的翻译模型
在Transformer之前,递归神经网络(RNN)一直是处理序列数据的首选方法,大家做机器翻译用的最多的就是基于RNN的Encoder-Decoder模型。
图1: RNN的工作方式
输入:
输入向量 \(\vec{x_t}\)
(编码词)
隐藏状态向量 \(\vec{h_{t-1}}\)(包含当前块之前的序列状态)
输出:
输出向量 \(\vec{o_t}\)
权重:
\({W}\)—— \(\vec{x_t}\) ...
CS231n Assignment 1 逐行解析
CS231n Assignment 1
作业1分为五个部分:KNN、SVM、Softmax classifier、2层神经网络、Higher
Level Representations: Image Features.
建议作业完成顺序:
k近邻分类:knn.ipynb & k_nearest_neighbor.py
svm线性分类:svm.ipynb & linear_svm.py &
linear_classifier.py
softmax线性分类:softmax.ipynb & softmax.py
两层神经网络:two_layer_net.ipynb & neural_net.py
k-Nearest Neighbor (kNN)
在knn.ipynb中,调用了k_nearest_neighbor.py文件。
k近邻分类算法步骤如下介绍:
记住所有训练图像
计算测试图像与所有训练图像的距离(常用L2距离)
选择与测试图像距离最小的k张训练图像
计算这k张图像所对应的类别出现的次数,选择出现次数最多 ...
Transformer 零基础解析教程,从Encoder-Decoder架构说起(1/4)
Transformer教程系列介绍
大模型的发展正在逐渐从单一模态数据输入向多模态数据输入演进,文本、语音、图像、视频等多模态的联合训练学习,不同模态之间形成有效互补,这将有助于提升模型的效果和泛化能力,为迈向通用人工智能奠定更加坚实的一步。而提到多模态的算法模型,就不得不提到大名鼎鼎的
Transformer。
2017年, Google研究团队发表了论文 《Attention
Is All You
Need》,Transformer横空出世,并很快成为自然语言处理(NLP)领域的标杆模型,如机器翻译及后续的BERT、GPT系列等NLP大模型。Transformer也被应用到计算机视觉(CV)领域,用于图像分类、物体检测、图像生成和视频处理等任务,代表性如DERT、ViT等。此外,Transforme也被应用到了语音领域(ASR),用于语音识别、语音合成、语音增强和音乐生成等任务。此外,NLP、视觉和语音构成的多模态场景,也是近年来Transformer应用的热点方向,例如视觉问答、视觉常识推理、语音到文本翻译和文本到图像生成等。
本文主要讲解Transformer之前的 ...
我的项目经历
我的项目经历--目录
软件编程项目
无人机集群电磁仿真设计
可上传私人文档的ChatGPT
Python爬取国家统计数据
app制作与安全性分析
绕过认证系统实验
AI玩俄罗斯方块
手写数字识别GUI
弱监督条件下的点云语义理解
马里奥DIY版
简易版魔塔
疫情地图小程序
硬件控制项目
玩具狗的多种开关方式
GPS欺骗
基于Arduino的音乐播放器
软件编程项目
无人机集群电磁仿真设计
2021.1 - 2021.8
描述:
我们通过以下步骤解决无人机集群的目标电磁特征数据的获取问题,提出了解决无人机集群问题目标检测的创新思路。
首先,以 "Gremlin
"无人机为代表的典型单架固定翼无人机为例,基于多级快速多极法(MLFMM)进行电磁计算。然后,利用雷达散射截面(RCS)仿真数据和二维反合成孔径雷达(ISAR)成像来验证上述仿真结果的结果准确性。最后,我们对无人机集群的RCS模拟数据进行了模拟和验证。
用到的编程语言和软件工具有:
(1)Solidworks -- 建立两类无人机的三维模型 (2)Feko电磁仿 ...
Python爬虫爬取国家统计局数据
Python
爬虫爬取国家统计局数据
本次实验以爬取“国家统计局”首页中的【上海市城乡居民收支基本情况】为例,国家统计局其他页面的爬取方法大同小异
1.爬虫基本流程
发起请求:通过http/https库向目标站点发起请求,即发送一个request,请求可以包含额外的headers等信息,等待服务器响应
获取相应内容:如果服务器能正常响应,会得到一个response,response的内容便是所要获取的页面内容,类型可能有HTML,json字符串,二进制数据(如图片视频)等类型
解析内容:得到的内容可能是HTML,可以用正则表达式,网页解析库进行解析,可能是json,可以直接转为json对象,可能是二进制数据,可以做保存或者进一步的处理
(本次实验得到的解析内容是json)
保存数据:可以存为文本,也可以保存至数据库,或者特定格式的文件
2.打开网页并分析
国家统计局的网站很奇怪,明明是https却会告警不安全,首次打开界面如下(本人使用的是谷歌浏览器)
点击“高级”-“继续前往”,方可进入首页
选择“季度数据”-“分省季度数据”
选择“人民 ...
游戏内抽卡机制总结
写在前面
卡牌类游戏很好地搭载了二次元的核心元素——“角色”,抽卡活动对库存货币消耗和新增货币均有很大的正面作用,且参与了抽卡活动的玩家也占了充值用户相当高的比例。抽卡活动确实是当前非常重要的付费点
但本人深知“玄不改非,氪能改命”,而因为是轻度玩家并不想充钱变强,所以卡牌游戏玩的并不多,阴阳师、明日方舟、剑与远征等都略有接触,而每个游戏都有着属于自己的抽卡概率。
像阴阳师的SSR大体在1%左右,而剑与远征的概率在4.8%左右,但为了用户体验,最重要的是不能让时间玩家拉开RMB玩家的差距,不能违反大R碾压小R的原则,所以所谓随机基本都是伪随机。
纯干货,为了不影响阅读就不放图片了,下面介绍一些常见的抽卡机制。
①保底机制
这是最简单,也最普遍的一种机制,如《王者荣耀》,购买次数到达361次时,荣耀水晶产出概率为100%。《剑与远征》两个保底机制,30抽必出紫卡,在同卡池内累计抽30次即可获得出一张紫卡英雄不论是单抽还是连抽,只要数量达到即必出紫卡。
还有一个保底机制就是10连抽必出一个稀有或者精英级别的英雄,和30抽不一样的地方在于只能是适用于十连抽而不能适用于十次单抽。 ...
我的第一篇博客
为什么要写博客
记录博客是酝酿很久的想法,相信多数人作出这一决定也都经历了较长时间的拖延症hh。不过除了习惯性偷懒,也有出于对自身技术水平不自信的考量,毕竟大牛是极少数,多数人不过是在平均线上徘徊。
不过大脑做决定并不是纯粹理性的,反而主要凭感性。立下了靶子,定下来方向,理性思维才会积极地把行为合理化。
对为什么突发奇想开始记录博客,个人总结了如下动机:
无论课内外,本人都已养成了动笔前先查阅大量资料的习惯。心里对那些具有开源精神的大牛们、前辈们充满敬意和感激。很多时候,一个简洁清晰的结论、一行高度概括的代码,单靠自己的探索往往要事倍功半,甚至还可能因为其在知识盲区(Unknown
Unknown)而作不必要的苦恼,被前辈们留下的博客文章中不经意地一语道破,这样的瞬间简直不要太多。
从一个纯小白进化到现在一个在很多领域都有些入门经验的....小白来说,也很希望把当时掉进去的坑补上,最起码在前面做个警示,新人在环境搭建阶段没必要走弯路,把重心放在解决需求的程序调试阶段,实现更高的自我提升效率。
俗话说得好:“好记性不如烂笔头。”
之前看过一本讲如何高效记笔记的书,但纸 ...