自主性提示:  我想。。。、看想看的东西

非自主提示:随意一看     、看环境中现眼的东西

     环境的东西就是键和值  我想要是查询

#@save
def show_heatmaps(matrices, xlabel, ylabel, titles=None, figsize=(2.5, 2.5),cmap='Reds'):"""显示矩阵热图"""d2l.use_svg_display()num_rows, num_cols = matrices.shape[0], matrices.shape[1]fig, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize,sharex=True, sharey=True, squeeze=False)for i, (row_axes, row_matrices) in enumerate(zip(axes, matrices)):for j, (ax, matrix) in enumerate(zip(row_axes, row_matrices)):pcm = ax.imshow(matrix.detach().numpy(), cmap=cmap)if i == num_rows - 1:ax.set_xlabel(xlabel)if j == 0:ax.set_ylabel(ylabel)if titles:ax.set_title(titles[j])fig.colorbar(pcm, ax=axes, shrink=0.6);

attention_weights = torch.eye(10).reshape((1, 1, 10, 10))
show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')

上面没讲哇。。。。








n_train = 50  # 训练样本数
x_train, _ = torch.sort(torch.rand(n_train) * 5)   # 排序后的训练样本
0-5之间随机生成50个数字 然后排序

def f(x):return 2 * torch.sin(x) + x**0.8y_train = f(x_train) + torch.normal(0.0, 0.5, (n_train,))  # 训练样本的输出
真实函数加上噪音 噪音是0均值 0.5方差 高斯
x_test = torch.arange(0, 5, 0.1)  # 测试样本
0-5之间按0.1均匀的东西
y_truth = f(x_test)  # 测试样本的真实输出
n_test = len(x_test)  # 测试样本数
n_test
50、

画图函数

def plot_kernel_reg(y_hat):d2l.plot(x_test, [y_truth, y_hat], 'x', 'y', legend=['Truth', 'Pred'],xlim=[0, 5], ylim=[-1, 5])d2l.plt.plot(x_train, y_train, 'o', alpha=0.5);

# X_repeat的形状:(n_test,n_train),
# 每一行都包含着相同的测试输入(例如:同样的查询)
X_repeat = x_test.repeat_interleave(n_train).reshape((-1, n_train))
repeat 吧1234变成1111 222 333 444  n_train控制重复次数
# x_train包含着键。attention_weights的形状:(n_test,n_train),
# 每一行都包含着要在给定的每个查询的值(y_train)之间分配的注意力权重
attention_weights = nn.functional.softmax(-(X_repeat - x_train)**2 / 2, dim=1)
# y_hat的每个元素都是值的加权平均值,其中的权重是注意力权重
y_hat = torch.matmul(attention_weights, y_train)
按权重预测
plot_kernel_reg(y_hat)

最上角

最深

应该就是距离最近   所以权重最大  然后最右下角也是这样

weights = torch.ones((2, 10)) * 0.1
values = torch.arange(20.0).reshape((2, 10))
torch.bmm(weights.unsqueeze(1), values.unsqueeze(-1))
tensor([[[ 4.5000]],[[14.5000]]])

class NWKernelRegression(nn.Module):def __init__(self, **kwargs):super().__init__(**kwargs)self.w = nn.Parameter(torch.rand((1,), requires_grad=True))def forward(self, queries, keys, values):# queries和attention_weights的形状为(查询个数,“键-值”对个数)queries = queries.repeat_interleave(keys.shape[1]).reshape((-1, keys.shape[1]))self.attention_weights = nn.functional.softmax(-((queries - keys) * self.w)**2 / 2, dim=1)# values的形状为(查询个数,“键-值”对个数)return torch.bmm(self.attention_weights.unsqueeze(1),values.unsqueeze(-1)).reshape(-1)

# X_tile的形状:(n_train,n_train),每一行都包含着相同的训练输入
X_tile = x_train.repeat((n_train, 1))
# Y_tile的形状:(n_train,n_train),每一行都包含着相同的训练输出
Y_tile = y_train.repeat((n_train, 1))
# keys的形状:('n_train','n_train'-1)
keys = X_tile[(1 - torch.eye(n_train)).type(torch.bool)].reshape((n_train, -1))
# values的形状:('n_train','n_train'-1)
values = Y_tile[(1 - torch.eye(n_train)).type(torch.bool)].reshape((n_train, -1))
net = NWKernelRegression()
loss = nn.MSELoss(reduction='none')
trainer = torch.optim.SGD(net.parameters(), lr=0.5)
animator = d2l.Animator(xlabel='epoch', ylabel='loss', xlim=[1, 5])for epoch in range(5):trainer.zero_grad()l = loss(net(x_train, keys, values), y_train)l.sum().backward()trainer.step()print(f'epoch {epoch + 1}, loss {float(l.sum()):.6f}')animator.add(epoch + 1, float(l.sum()))

# keys的形状:(n_test,n_train),每一行包含着相同的训练输入(例如,相同的键)
keys = x_train.repeat((n_test, 1))
# value的形状:(n_test,n_train)
values = y_train.repeat((n_test, 1))
y_hat = net(x_test, keys, values).unsqueeze(1).detach()
plot_kernel_reg(y_hat)

d2l.show_heatmaps(net.attention_weights.unsqueeze(0).unsqueeze(0),xlabel='Sorted training inputs',ylabel='Sorted testing inputs')

都没咋讲。。。。

Pytorch 注意力机制_哇咔咔负负得正的博客-CSDN博客环境使用 Kaggle 里免费建立的 Notebook教程使用李沐老师的 动手学深度学习 网站和 视频讲解小技巧:当遇到函数看不懂的时候可以按 查看函数详解。不随意线索(无意识注意):想读书:随意线索(有意识地注意)非参就是不学习参数。​1​exp(−2u2​)那么:f(x)=∑i=1nexp⁡(−12(x−xi)2)∑j=1nexp⁡(−12(x−xj)2)yi=∑i=1nsoftmax⁡(−12(x−xi)2)yi\begin{aligned}f(x) &=\sum_{i=1}^{n} \https://blog.csdn.net/qq_39906884/article/details/125245275?spm=1001.2014.3001.5502








query和keys做注意力分数函数 然后丢到softmax 变成注意力权重 对每个map做加权和做输出






65 注意力分数【动手学深度学习v2】_哔哩哔哩_bilibili动手学深度学习 v2 - 从零开始介绍深度学习算法和代码实现课程主页:https://courses.d2l.ai/zh-v2/教材:https://zh-v2.d2l.ai/, 视频播放量 54299、弹幕量 410、点赞数 920、投硬币枚数 771、收藏人数 312、转发人数 45, 视频作者 跟李沐学AI, 作者简介 ,相关视频:66 使用注意力机制的seq2seq【动手学深度学习v2】,人工智能研究生现状,在线激情讲解transformer&Attention注意力机制(上),【Transformer模型】曼妙动画轻松学,形象比喻贼好记,华智冰的真身和AI同步,用自己训练的AI玩王者荣耀,GAN论文逐段精读【论文精读】,【原来如此】深度学习中注意力机制(attention)的真实由来,PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】,手推transformerhttps://www.bilibili.com/video/BV1Tb4y167rb?p=3&spm_id_from=pageDriver&vd_source=eba877d881f216d635d2dfec9dc10379

10.3. 注意力评分函数 — 动手学深度学习 2.0.0-beta0 documentationhttps://zh.d2l.ai/chapter_attention-mechanisms/attention-scoring-functions.htmlPytorch 注意力分数_哇咔咔负负得正的博客-CSDN博客环境使用 Kaggle 里免费建立的 Notebook教程使用李沐老师的 动手学深度学习 网站和 视频讲解小技巧:当遇到函数看不懂的时候可以按 查看函数详解。注意力汇聚(Pooling)表达式:f(x)=∑iα(x,xi)yi=∑i=1nsoftmax(−12(x−xi)2)yif(x) = \sum_i{\alpha(x, x_i)y_i} = \sum_{i=1}^{n}softmax(-\frac{1}{2}(x-x_i)^2)y_if(x)=i∑​α(x,xi​)yi​=i=1∑n​softmahttps://blog.csdn.net/qq_39906884/article/details/125248680?spm=1001.2014.3001.5502

3. Q&A

Q:mask_softmax 是啥意思?
A:有时候一个句子不够长,假如说一个句子 4 个单词,输入格式要求 10 个单词,那么需要填充 6 个无意义的词,然后用 mask_softmax 告诉 Query 计算的时候不需要考虑后 6 个词。

这块没有学习

64注意力机制 10章相关推荐

  1. 注意力机制--转载自我的学生隆兴写的博客

    原文链接为:https://a-egoist.com/posts/a44b8419/,学生自己搭建的博客,点赞! 1 Attention 1.1 什么是 Attention 灵长类动物的视觉系统中的视 ...

  2. 小目标检测3_注意力机制_Self-Attention

    主要参考: (强推)李宏毅2021/2022春机器学习课程 P38.39 李沐老师:64 注意力机制[动手学深度学习v2] 手把手带你Yolov5 (v6.1)添加注意力机制(一)(并附上30多种顶会 ...

  3. 文献阅读-融合注意力机制的 IETM 细粒度跨模态检索算法

    引用格式:翟一琛,顾佼佼,宗富强,姜文志.融合注意力机制的 IETM 细粒度跨模态 检索算法[J/OL].系统工程与电子技术. https://kns.cnki.net/kcms/detail/11. ...

  4. 第8章 注意力机制与外部记忆

    系列文章目录 第1章 绪论 第2章 机器学习概述 第3章 线性模型 第4章 前馈神经网络 第5章 卷积神经网络 第6章 循环神经网络 第7章 网络优化与正则化 第8章 注意力机制与外部记忆 第9章 无 ...

  5. 《Android开发艺术探索》读书笔记 (10) 第10章 Android的消息机制

    第10章 Android的消息机制 10.1 Android消息机制概述 (1)Android的消息机制主要是指Handler的运行机制,其底层需要MessageQueue和Looper的支撑.Mes ...

  6. 文献阅读笔记10——ECA注意力机制

    0 写在前面 第一部分内容更针对于精度的提升,第二部分就需要找到一些方法针对速度的提升. 1 ECA注意力机制 天津大学在2020CVPR发表的一篇文章 1.1 Abstract+Conclusion ...

  7. 第8章、注意力机制与外部记忆

    神经网络中可以存储的信息量称为网络容量(Network Capacity).一般来讲,利用一组神经元来存储信息时,其存储容量和神经元的数量以及网络的复杂度成正比.要存储的信息越多,神经元数量就要越多或 ...

  8. CVPR 2022 | 华南理工提出VISTA:双跨视角空间注意力机制实现3D目标检测SOTA,即插即用...

    来源:机器之心 本文提出了 VISTA,一种新颖的即插即用多视角融合策略,用于准确的 3D 对象检测.为了使 VISTA 能够关注特定目标而不是一般点,研究者提出限制学习的注意力权重的方差.将分类和回 ...

  9. 【动手学深度学习】(task123)注意力机制剖析

    note 将注意力汇聚的输出计算可以作为值的加权平均,选择不同的注意力评分函数会带来不同的注意力汇聚操作. 当查询和键是不同长度的矢量时,可以使用可加性注意力评分函数.当它们的长度相同时,使用缩放的& ...

最新文章

  1. CF498C Array and Operations(数论 + 最大流)
  2. 详解.NET中容易混淆的委托与接口
  3. PAT (Basic Level) 1034 有理数四则运算(模拟)
  4. ImageView一例
  5. AC自动机-HDU2222-模板题
  6. [GO]无缓冲通道(unbuffered channel)
  7. spark学习——(二)spark基础环境配置-linux(1)
  8. pixmap和label设置图片自适应大小
  9. 全开源JAVA支付系统/jeepay聚合支付四方支付系统
  10. xjoi 1543 我自闭了
  11. 海量数据挖掘之中移动流量运营系统
  12. 【LWIP】(补充)STM32H743(M7内核)CubeMX配置LWIP并ping通
  13. C# 超市满减打折优惠
  14. 智能制造的生产运营管理
  15. 第二十二章 opengl之高级OpenGL(几何着色器)
  16. 大型在线实时应用解决方案
  17. LOJ 6485 LJJ学多项式
  18. 推荐一个下载神器(官网资料下载必备)
  19. 皖西学院计算机专业男女比例,2018全国高校男女比例排行榜出炉!哪所大学最难找对象?...
  20. 十一小长假来临,智能安防监控如何成为民众安全的“守护者”?

热门文章

  1. js设置弹出式独立窗口页面,和 window 的方法
  2. 成都工控开发:太简单了!串口触摸屏开发HMI的全流程介绍
  3. Bugzilla的配置和安装
  4. promise和async
  5. sparkSQL操作中spark内报错“拒绝连接”解决方案
  6. Atcoder 284题解
  7. 归并排序(图解配代码)
  8. 各种数学平均数之间的关系
  9. RDB和AOF的区别
  10. 修复树莓派鼠标移动缓慢迟滞问题