随笔分类 -  深度学习 / 动手学深度学习 / 注意力机制

摘要:\((3)\) 看不懂答案在说什么。。一般来说,就认为点积既有方向的元素也有长度的元素,而求和只有长度的元素,所以点积更好(比如两个方向垂直的向量) 阅读全文
posted @ 2025-03-16 09:49 最爱丁珰 阅读(12) 评论(0) 推荐(0)
摘要:![image](https://img2024.cnblogs.com/blog/2490134/202503/2490134-20250303215001358-527347110.png) 阅读全文
posted @ 2025-03-03 22:01 最爱丁珰 阅读(11) 评论(0) 推荐(0)
摘要:注意,我们这里必须要将输入的前两维(batch_size和num_steps)结合起来,而不能将后两维(num_steps和dimension)结合起来,因为这里num_steps是变化的(num_steps是我们指定的超参数,指定之后编码器-解码器的确只能处理固定长度的序列,因为有truncate 阅读全文
posted @ 2025-03-03 21:50 最爱丁珰 阅读(67) 评论(0) 推荐(0)
摘要:CNN怎么做序列?实际上之前已经接触过了,就是把序列当成没有高只有宽的图片而已 将书上讲的复杂度汇总如下 CNN 计算复杂度:进行一次卷积计算,由于卷积层大小为\(k\),输入有\(d\)个通道,所以复杂度为\(O(kd)\);由于序列长为\(n\),所以计算完输出的一个通道的时间复杂度为\(O(k 阅读全文
posted @ 2025-03-03 15:09 最爱丁珰 阅读(99) 评论(0) 推荐(0)
摘要:这里为什么要用bmm:看NWKernelRegression定义的过程,我们是将查询数定义为了批量,attention_weights在第1维度展开就可以提取每一个查询,将所有加了权的键变成行向量;values在最后一个维度展开,就将所有值变成了一个列向量;此时两者相乘就是预测值 阅读全文
posted @ 2025-02-26 15:15 最爱丁珰 阅读(34) 评论(0) 推荐(0)
摘要:在TransformerEncoder中,要将嵌入表示先乘以嵌入维度的平方根的原因我觉得是让位置编码和特征维度的数值大小匹配,因为嵌入矩阵通常通过均匀分布初始化,例如在 PyTorch 的 nn.Embedding 中,默认使用均匀分布\([-\sqrt{\frac{3}{d}},\sqrt{\fr 阅读全文
posted @ 2025-02-25 08:56 最爱丁珰 阅读(11) 评论(0) 推荐(0)
摘要:这个nn.LayerNorm有点搞笑我觉得,有个参数normalized_shape,输入想要归一化张量的最后几个维度,然后就将最后几个维度的元素看做一个整体进行归一化,如下 import torch import torch.nn as nn # 定义输入张量 (batch_size, seque 阅读全文
posted @ 2025-02-25 08:11 最爱丁珰 阅读(43) 评论(0) 推荐(0)
摘要:Transformer之所以需要位置信息,是因为Transformer没有RNN那种循环结构,导致其无法区分每个token谁在前在后。数学上,比如Transformer的编码器,由于其是多头自注意力和逐位前馈网络,所以对于一个输入编码器的序列,将序列的顺序交换,最后得到的向量就是交换之前得到的向量也 阅读全文
posted @ 2025-02-24 14:40 最爱丁珰 阅读(21) 评论(0) 推荐(0)
摘要:首先,RNN是逐个处理词元的,这个部分应该是指传统的RNN模型,比如LSTM或GRU,它们是按时间步依次处理输入序列的,每个时间步只处理一个词元,并且当前的输出依赖于前一个时间步的隐藏状态。所以它的处理是顺序的,不能同时处理后面的词元,必须一个接着一个来。这样做的好处是能够捕捉到序列中的时间依赖关系 阅读全文
posted @ 2025-02-24 14:24 最爱丁珰 阅读(39) 评论(0) 推荐(0)
摘要:valide_lens是二维数组,假设其如下 tensor([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]) 那么对其在第零维进行repeat_interleave后,如下 tensor 阅读全文
posted @ 2025-02-23 17:26 最爱丁珰 阅读(21) 评论(0) 推荐(0)
摘要:这里查询,键和值的形状不要看书上,看我下面写的文字 对于查询来说,第一维的确是批量大小,可以忽略不管;第二维是一个批量中查询\(z\)的个数;第三维是每个查询\(z\)的特征维度(代码中的query_size) 对于键来说,第一维的确是批量大小,可以忽略不管;第二维是键值对个数,也就是键的个数,也就 阅读全文
posted @ 2025-02-23 16:03 最爱丁珰 阅读(45) 评论(0) 推荐(0)
摘要:这里的键可以理解成\(x\),值可以理解成\(y\),也就是说每一个\(x\)都会对应一个\(y\)(在这个情形下,\(x\)和\(y\)都可以是向量,而且维度不一定相同);查询可以理解成一个我们想要预测的量\(z\),想要预测\(z\)的输出\(y\)是多少(注意\(z\)的维度不一定要与\(x\ 阅读全文
posted @ 2025-02-23 15:52 最爱丁珰 阅读(91) 评论(0) 推荐(0)
摘要:torch.repeat_interleave 用于按指定规则重复张量的元素,支持按维度扩展或自定义每个元素的重复次数。以下是详细说明和示例: 作用 功能:沿特定维度重复张量的元素,支持两种模式: 统一重复次数:所有元素重复相同次数。 自定义重复次数:每个元素按单独指定的次数重复。 与 torch. 阅读全文
posted @ 2025-02-22 15:54 最爱丁珰 阅读(105) 评论(0) 推荐(0)