当前位置: 首页 > news >正文

做购物网站能赚钱吗/google中文搜索引擎

做购物网站能赚钱吗,google中文搜索引擎,深圳 b2c 网站建设,哪里可以做寄生虫网站自注意力(Self-Attention)与交叉注意力(Cross-Attention)PyTorch 简单实现 在深度学习中,注意力机制是现代 Transformer 架构的核心思想之一。本文将介绍两种常见的注意力机制:自注意力(Self-A…

自注意力(Self-Attention)与交叉注意力(Cross-Attention)PyTorch 简单实现

在深度学习中,注意力机制是现代 Transformer 架构的核心思想之一。本文将介绍两种常见的注意力机制:自注意力(Self-Attention)交叉注意力(Cross-Attention),并通过 PyTorch 给出简单实现与使用示例。


📦 必要导入

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch import einsum
from einops import rearrange, repeat
from inspect import isfunction# 一些基础工具函数
def exists(val):return val is not Nonedef default(val, d):if exists(val):return valreturn d() if isfunction(d) else d

🔍 什么是注意力机制?

注意力机制允许模型在处理输入序列时自动聚焦于最相关的部分,从而增强建模能力。以 Transformer 为例,它通过注意力机制建立了序列中不同位置之间的信息关联。


🤖 自注意力(Self-Attention)

自注意力是指查询(Query)、键(Key)、值(Value)都来自同一个输入序列。这种机制允许序列中的每个元素关注其它所有位置的信息,是 BERT、GPT 等模型的基本构件。

✅ PyTorch 实现:

class SelfAttention(nn.Module):def __init__(self, dim, heads=8, dim_head=64, dropout=0.0):super().__init__()inner_dim = dim_head * headsself.scale = dim_head ** -0.5self.heads = headsself.to_qkv = nn.Linear(dim, inner_dim * 3, bias=False)self.to_out = nn.Sequential(nn.Linear(inner_dim, dim),nn.Dropout(dropout))def forward(self, x, mask=None):h = self.headsqkv = self.to_qkv(x)q, k, v = qkv.chunk(3, dim=-1)q, k, v = map(lambda t: rearrange(t, "b n (h d) -> (b h) n d", h=h), (q, k, v))sim = einsum("b i d, b j d -> b i j", q, k) * self.scaleif exists(mask):...attn = sim.softmax(dim=-1)out = einsum("b i j, b j d -> b i d", attn, v)out = rearrange(out, "(b h) n d -> b n (h d)", h=h)return self.to_out(out)

🧪 使用示例:

attn = SelfAttention(dim=64)
x = torch.randn(1, 10, 64)
out = attn(x)
print(out.shape)  # torch.Size([1, 10, 64])

🔁 交叉注意力(Cross-Attention)

交叉注意力允许模型在处理一个序列时,从另一个序列中获取信息。常用于:

  • 编码器-解码器结构(如 Transformer 翻译模型)
  • 图文跨模态对齐
  • 条件生成任务

与自注意力的不同在于:

  • Query 来自当前输入(例如解码器)
  • Key 与 Value 来自另一个序列(例如编码器)

✅ PyTorch 实现:

class CrossAttention(nn.Module):def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, dropout=0.0):super().__init__()inner_dim = dim_head * headscontext_dim = default(context_dim, query_dim)self.scale = dim_head ** -0.5self.heads = headsself.to_q = nn.Linear(query_dim, inner_dim, bias=False)self.to_k = nn.Linear(context_dim, inner_dim, bias=False)self.to_v = nn.Linear(context_dim, inner_dim, bias=False)self.to_out = nn.Sequential(nn.Linear(inner_dim, query_dim),nn.Dropout(dropout))def forward(self, x, context=None, mask=None):h = self.headscontext = default(context, x)q = self.to_q(x)k = self.to_k(context)v = self.to_v(context)q, k, v = map(lambda t: rearrange(t, "b n (h d) -> (b h) n d", h=h), (q, k, v))sim = einsum("b i d, b j d -> b i j", q, k) * self.scaleif exists(mask):...attn = sim.softmax(dim=-1)out = einsum("b i j, b j d -> b i d", attn, v)out = rearrange(out, "(b h) n d -> b n (h d)", h=h)return self.to_out(out)

🧪 使用示例:

ca = CrossAttention(query_dim=64, context_dim=77)
x = torch.randn(1, 10, 64)          # 解码器输入
context = torch.randn(1, 20, 77)    # 编码器输出
out = ca(x, context)
print(out.shape)  # torch.Size([1, 10, 64])

🧠 总结对比

模块Query 来自Key/Value 来自典型应用
Self-Attention当前输入当前输入BERT、GPT、自注意图像建模
Cross-Attention当前输入外部上下文编解码结构、跨模态、条件生成

🔗 参考链接

Stable Diffusion CrossAttention 代码实现

http://www.whsansanxincailiao.cn/news/31992060.html

相关文章:

  • 用新域名做网站排名快吗/做app的网站
  • 做任务领积分兑换别的网站上的会员/seo排名优化课程
  • 网站开发需要哪些语言/流程优化四个方法
  • 可以做网络兼职的网站/天津网站建设技术外包
  • 网站关键词优化怎么做的/找个免费网站这么难吗
  • python做网站 jsp网站/免费获客平台
  • 网站建设与运营 教材 崔/百度推广后台登录页面
  • 高档网站建设公司/seo快速排名利器
  • 有没有做网站/网站推广技术
  • 与人妖做视频网站/百度经验官网
  • 有没有打代码的网站/株洲seo推广
  • 做代码的网站/搜索引擎站长平台
  • 编程免费自学网站/万网域名注册教程
  • 自己免费建设网站/网站seo具体怎么做?
  • 如何制作境外网站/深圳seo推广外包
  • 北京响应式网站如何开发/竞价托管外包代运营
  • 酷我音乐网站架构/网络优化工程师为什么都说坑人
  • 鞍山建设信息网站/全国疫情最新消息今天新增
  • 网站项目ppt怎么做/seo研究中心vip教程
  • 杭州老牌的网站建设/设计网站logo
  • 免费永久网站制作/优化seo网站
  • 网站pc和手机端分离怎么做/每天新闻早知道
  • wordpress页面排序/重庆seo薪酬水平
  • 交通局网站建设方案策划书/营销策划思路及方案
  • 电子商务网站建设的工具/网站关键词排名外包
  • wordpress 主题配置/南宁seo推广公司
  • 电商网站系统建设考试/合肥百度推广优化
  • 怎样创建自己公司网站/百度网盘搜索引擎入口哪里
  • 土木毕业设计代做网站/关键词百度云
  • 沧州网站建设培训学校/最近一两天的新闻有哪些