动手学深度学习64 注意力机制

1. 注意力机制

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
非参: 没有参数。
给定数据:key value对
x:query。
来了一个新数据,只看和新数据比较相近的某些数据的y。类似于K近邻
K: kernel 核, 函数,计算新来的数据和已有的数据的距离。

K怎么选?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 代码

w: 设置平滑一点或者不平滑一些。 让窗口变窄?

import torch
from d2l import torch as d2l
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')
上一篇:webrtc agc2实现原理


下一篇:关于结构体的那些事儿(模版&样例)