![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
transformer
XD101DX
这个作者很懒,什么都没留下…
展开
-
Transformer简明教程 P11 定义模型
# 编码器层# 这是一层class EncoderLayer(torch.nn.Module): def __init__(self): super().__init__() # 多头注意力层 self.mh = MultiHead() self.fc = FullyConnectedOutput() def forward(self, x, mask): # 计算自注意力,维度不变 # [原创 2022-03-18 17:42:04 · 585 阅读 · 0 评论 -
Transformer简明教程 P10 Mask函数
是pad情况为true,不是为falsedef mask_pad(data): # b句话,每句话50个词,这里是还没embed的 # data = [b, 50] # 判断每个词是不是<PAD> mask = data == zidian_x['<PAD>'] # [b, 50] -> [b, 1, 1, 50] mask = mask.reshape(-1, 1, 1, 50) # 在计算注意力时,是计算50个词原创 2022-03-18 17:30:16 · 751 阅读 · 0 评论 -
Transformer简明教程 P9 注意力与位置编码
# 注意力计算函数def attention(Q, K, V, mask): # b句话,每句话50个词,每个词编码成32维向量,4个头,每个头分到8维向量 # Q,K,V = [b, 4, 50, 8] # [b, 4, 50, 8] * [b, 4, 8, 50] -> [b, 4, 50, 50] # Q,K矩阵相乘,求每个词相对其他所有词的注意力 score = torch.matmul(Q, K.permute(0, 1, 3, 2)) .原创 2022-03-18 17:25:56 · 1017 阅读 · 0 评论 -
Transformer简明教程 P8 定义数据
字典就是拿一个数字代表一个词代码:# 定义字典zidian_x = '<SOS>,<EOS>,<PAD>,0,1,2,3,4,5,6,7,8,9,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m'zidian_x = {word: i for i, word in enumerate(zidian_x.split(','))}# print(zidian_x)zidian_xr = [k for k,.原创 2022-03-18 16:27:27 · 339 阅读 · 0 评论 -
Transformer简明教程 P7 实验数据介绍
虚线箭头表示y事由x的最后一位决定的:目的是为了增加映射复杂度,让y数据长度比x数据多一位以方便数据处理数据样例:原创 2022-03-18 16:11:32 · 148 阅读 · 0 评论 -
Transformer简明教程 P6 transformer完整计算过程
不断给A:整体架构:原创 2022-03-18 15:53:27 · 234 阅读 · 0 评论 -
Transformer简明教程 P5 Mask
pad这个词对其他的词要计算,而其他词对pad的不用计算;原创 2022-03-18 15:42:28 · 232 阅读 · 0 评论 -
Transformer简明教程 P4 词向量编码
transformer 的词向量编码 与 RNN 不同,需要加入一个特殊的位置编码假设 即使a = b 但是由于ab位置不同,所以最后的x1与x2 会不同位置编码矩阵元素计算公式:原创 2022-03-18 12:45:56 · 528 阅读 · 0 评论 -
Transformer简明教程 P3 计算注意力
attention的QKV向量:自注意力计算流程:换成用矩阵计算,(计算机)效率更高/(数学上,矩阵和向量复杂度一样):单头注意力机制和多头注意力机制:单头注意力机制:即只有一组QKV;多头注意力机制计算过程:有多个Wq,Wk,Wv矩阵得到多个QKV...原创 2022-03-18 12:10:20 · 1041 阅读 · 0 评论 -
Transformer简明教程 P2 总体架构(编码器-解码器)
编码器-解码器 图:原创 2022-03-18 11:50:51 · 689 阅读 · 0 评论