首页 > 其他分享 >《动手学深度学习 Pytorch版》 10.1 注意力提示

《动手学深度学习 Pytorch版》 10.1 注意力提示

时间:2023-10-23 12:11:22浏览次数:36  
标签:10.1 10 提示 自主性 Pytorch ax matrices 注意力

10.1.1 生物学中的注意力提示

“美国心理学之父” 威廉·詹姆斯提出的双组件(two-component)框架:

  • 非自主性提示:基于环境中物体的突出性和易见性

  • 自主性提示:受到了认知和意识的控制

10.1.2 查询、键和值

  • 注意力机制与全连接层或汇聚层区别开来的元素:是否包含自主性提示

  • 在注意力机制的背景下:

    • 自主性提示被称为查询(query)

    • 给定任何查询,注意力机制通过注意力汇聚(attention pooling) 将选择引导至感官输入(sensory inputs),例如中间特征表示。

    • 在注意力机制中,这些感官输入被称为值(value)。更通俗的解释,每个值都与一个键(key)配对,这可以想象为感官输入的非自主提示。可以通过设计注意力汇聚的方式,便于给定的查询(自主性提示)与键(非自主性提示)进行匹配,这将引导得出最匹配的值(感官输入)。

10.1.3 注意力的可视化

import torch
from d2l import torch as d2l

平均汇聚层可以被视为输入的加权平均值,注意力汇聚得到的是加权平均的总和值。下面的 show_heatmaps 函数,其输入 matrices 的形状是(要显示的行数,要显示的列数,查询的数目,键的数目)

#@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))  # 生成对角线全1,其余部分全0的二维数组
show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')  # 仅当查询和键相同时,注意力权重为1,否则为0。

image

练习

(1)在机器翻译中通过解码序列词元时,其自主性提示可能是什么?非自主性提示和感官输入又是什么?

自主性提示可能是上下文信息之类的

非自主性提示可能是指在机器翻译过程中使用的其他信息,比如语言学习或人工翻译的知识。

感官输入可能是指输入方式、


(2)随机生成一个 \(10\times 10\) 矩阵并使用 softmax 运算来确保每行都是有效的概率分布,然后可视化输出注意力权重。

attention_weights = d2l.F.softmax(torch.rand((10, 10)), dim=1).reshape((1, 1, 10, 10))
show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')

image

标签:10.1,10,提示,自主性,Pytorch,ax,matrices,注意力
From: https://www.cnblogs.com/AncilunKiang/p/17782110.html

相关文章

  • 上周热点回顾(10.16-10.22)
    热点随笔:· 困境添乱:即将开庭的2场离奇诉讼 (博客园团队)· 为.NET打开新大门:OpenVINO.NET开源项目全新发布 (.NET骚操作)· 接手了一个外包开发的项目,我感觉我的头快要裂开了~ (JAVA日知录)· .NET高性能开发-位图索引(一) (InCerry)· Dotnet工具箱:开源、免费的纯前端工......
  • 10.16
    学习了异常处理,异常处理的目的是依据实际情况提供不同的错误应对策略与手段,使程序更稳定,更安全。异常处理的主要用途是提供准确的错误消息,解释失败的原因、位置和错误类型等,同时提供一定的恢复能力,尽可能地保证数据完整性不被破坏,并让程序能继续运行。throws语句表明某方法中可......
  • 2023.10.18
    第18节:调试这一节强调了调试的重要性以及一些有关调试的心理学和技巧。1.调试的目标是解决问题,而不是对问题提出攻击性的反应。遇到bug时,应以解决问题为导向,而不是责怪他人或自己。2.当你目睹bug的发生或看到bug报告时,不要急于表示“那不可能”。首要任务是思考为什么......
  • 2023.10.19
    1.0版本生成四则运算并存入数据库importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOE......
  • 2023.10.17
    第13节:估算这一节强调了估算在软件开发中的重要性,并提供了一些建议来提高估算的准确性。1.通过学习估算并发展直觉,你可以展现出一种魔法般的能力,来确定任务的可行性。2.让估算更准确的单位值和描述方法是至关重要的,比如将时间估算从粗略的“大约6个月”改进为更精确的“130个......
  • 注意力机制
    如果你想使用PyTorch来实现这段代码,你可以按照以下步骤进行操作:导入所需的库和模块,包括NumPy和PyTorch。importnumpyasnpimporttorch定义输入矩阵A和B,并获取它们的维度信息。A=np.array(...)#输入矩阵AB=np.array(...)#输入矩阵B#转换为Py......
  • windows下的深度学习环境软件版本(cuda/cudnn/pytorch)
    为了方便多个深度学习框架的环境配置,推荐使用anoconda进行搭建。1.anaconda/miniconda下载地址anacoonda官方下载地址:FreeDownload|Anacondaminiconda官方下载地址: LatestMinicondainstallerlinksbyPythonversion—minicondadocumentation清华镜像源的下载地......
  • 10.19
    上午上了统一建模语言,讲了类图,顺序图,并且讲解了我们的模型不足,以及哪里需要修改,然后上了体育课,体育课,练习了蓝球的过人技巧,最后进行了比赛,虽然没有胜利,但是收获了很多,并且获得了很多的蓝球知识,下午上了数据结构和离散数学,数据结构讲了树和森林的遍历方法,离散数学讲了相容关系,以及......
  • 10.19
    例如:运行之后会抛出  ......
  • 10.18 Java异常处理2
     以上便是Java中异常的基本代码结构,其中,Java中所有异常都派生于excption以下是jdk中与异常相关的类。 ......