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

西安 美院 网站建设上海网站科技

西安 美院 网站建设,上海网站科技,网站视频管理系统,搜索引擎优化的内容包括#x1f6a9;#x1f6a9;#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 SwinTransformer 算法原理 SwinTransformer 源码解读1#xff08;项目配置/SwinTr…Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 SwinTransformer 算法原理 SwinTransformer 源码解读1项目配置/SwinTransformer类 SwinTransformer 源码解读2PatchEmbed类/BasicLayer类 SwinTransformer 源码解读3SwinTransformerBlock类 SwinTransformer 源码解读4WindowAttention类 SwinTransformer 源码解读5Mlp类/PatchMerging类 5、SwinTransformerBlock类 class SwinTransformerBlock(nn.Module):def extra_repr(self) - str:return fdim{self.dim}, input_resolution{self.input_resolution}, num_heads{self.num_heads}, \fwindow_size{self.window_size}, shift_size{self.shift_size}, mlp_ratio{self.mlp_ratio} 5.1 构造函数 SwinTransformerBlock 是 Swin Transformer 模型中的一个基本构建块。它结合了自注意力机制和多层感知机MLP并通过窗口划分和可选的窗口位移来实现局部注意力 def __init__(self, dim, input_resolution, num_heads, window_size7, shift_size0,mlp_ratio4., qkv_biasTrue, qk_scaleNone, drop0., attn_drop0., drop_path0.,act_layernn.GELU, norm_layernn.LayerNorm):super().__init__()self.dim dimself.input_resolution input_resolutionself.num_heads num_headsself.window_size window_sizeself.shift_size shift_sizeself.mlp_ratio mlp_ratioif min(self.input_resolution) self.window_size:self.shift_size 0self.window_size min(self.input_resolution)assert 0 self.shift_size self.window_size, shift_size must in 0-window_sizeself.norm1 norm_layer(dim)self.attn WindowAttention(dim, window_sizeto_2tuple(self.window_size), num_headsnum_heads,qkv_biasqkv_bias, qk_scaleqk_scale, attn_dropattn_drop, proj_dropdrop)self.drop_path DropPath(drop_path) if drop_path 0. else nn.Identity()self.norm2 norm_layer(dim)mlp_hidden_dim int(dim * mlp_ratio)self.mlp Mlp(in_featuresdim, hidden_featuresmlp_hidden_dim, act_layeract_layer, dropdrop)if self.shift_size 0:H, W self.input_resolutionimg_mask torch.zeros((1, H, W, 1)) # 1 H W 1h_slices (slice(0, -self.window_size), slice(-self.window_size, -self.shift_size),slice(-self.shift_size, None))w_slices (slice(0, -self.window_size), slice(-self.window_size, -self.shift_size),slice(-self.shift_size, None))cnt 0for h in h_slices:for w in w_slices:img_mask[:, h, w, :] cntcnt 1mask_windows window_partition(img_mask, self.window_size)mask_windows mask_windows.view(-1, self.window_size * self.window_size)attn_mask mask_windows.unsqueeze(1) - mask_windows.unsqueeze(2)attn_mask attn_mask.masked_fill(attn_mask ! 0, float(-100.0)).masked_fill(attn_mask 0, float(0.0))else:attn_mask Noneself.register_buffer(attn_mask, attn_mask)dim输入特征的通道数。input_resolution输入特征的分辨率高度和宽度num_heads自注意力头的数量window_size窗口大小决定了注意力机制的局部范围shift_size窗口位移的大小用于实现错位窗口多头自注意力SW-MSAmlp_ratioMLP隐层大小与输入通道数的比率qkv_biasQKV的偏置qk_scaleQKV的缩放因子drop丢弃率drop_path分别控制QKV的偏差、缩放因子、丢弃率、注意力丢弃率和随机深度率norm_layer激活层和标准化层默认分别为 GELU 和 LayerNormWindowAttention:窗口注意力模块Mlp一个包含全连接层、激活函数、Dropout的模块img_mask 图像掩码用于生成错位窗口自注意力h_slices 和w_slices水平和垂直方向上的切片用于划分图像掩码cnt 计数器标记不同的窗口mask_windows 图像掩码划分为窗口并将每个窗口的掩码重塑为一维向量window_partitionattn_mask 注意力掩码用于在自注意力计算中排除窗口外的位置register_buffer注意力掩码注册为一个模型的缓冲区 5.2 前向传播 def forward(self, x):H, W self.input_resolutionB, L, C x.shapeassert L H * W, input feature has wrong sizeshortcut xx self.norm1(x)x x.view(B, H, W, C)if self.shift_size 0:shifted_x torch.roll(x, shifts(-self.shift_size, -self.shift_size), dims(1, 2))else:shifted_x xx_windows window_partition(shifted_x, self.window_size)x_windows x_windows.view(-1, self.window_size * self.window_size, C)attn_windows self.attn(x_windows, maskself.attn_mask)attn_windows attn_windows.view(-1, self.window_size, self.window_size, C)shifted_x window_reverse(attn_windows, self.window_size, H, W)if self.shift_size 0:x torch.roll(shifted_x, shifts(self.shift_size, self.shift_size), dims(1, 2))else:x shifted_xx x.view(B, H * W, C)x shortcut self.drop_path(x)x x self.drop_path(self.mlp(self.norm2(x)))return x原始输入 torch.Size([4, 3136, 96])输入的是一个长度为3136的序列每个向量的维度为96在 被多次调用的时候维度也发生了变化原始输入 torch.Size([4, 784, 192])、torch.Size([4, 196, 384])、torch.Size([4, 49, 768])HW[ 5656]输入分辨率中的高度和宽度B, L, C[ 4313696]当前输入的维度批次大小、序列长度和向量的维度shortcut是用于残差norm1(x) torch.Size([4, 3136, 96])经过一个层归一化维度不变x.view(B, H, W, C) torch.Size([4, 56, 56, 96])将序列重塑为(Batch_sizeHeightWidthChannel)的形状shift_size用来判断是否做偏移最开始的时候shift_size为0window_partition用来做windows的划分特征图为[565696]默认窗口为77的大小因为可以划分出88个窗口shifted_x torch.Size([4, 56, 56, 96])位移操作后的x此处的偏移只用了torch的内置函数就可以完成torch.roll()x_windows torch.Size([256, 7, 7, 96])使用窗口划分函数划分256个窗口每个窗口7*7个特征每个特征96维向量x_windows torch.Size([256, 49, 96])将窗口重塑为一维向量以便进行自注意力计算attn_windows torch.Size([256, 7, 7, 96])WindowAttention处理x对每个窗口应用窗口注意力机制考虑到可能的注意力掩码shifted_x torch.Size([4, 56, 56, 96])注意力操作后的窗口重塑回原始形状并将它们合并回完整的特征图torch.Size([4, 56, 56, 96])如果进行了循环位移则执行逆向循环位移操作以恢复原始特征图的位置torch.Size([4, 3136, 96])特征图重塑回原始的[B, L, C]形状torch.Size([4, 3136, 96])应用残差连接并通过随机深度如果设置了的话torch.Size([4, 3136, 96])应用第二个标准化层然后是MLP并再次应用随机深度完成残差连接的最后一步。 5.3 窗口划分函数window_partition() def window_partition(x, window_size):B, H, W, C x.shapex x.view(B, H // window_size, window_size, W // window_size, window_size, C)windows x.permute(0, 1, 3, 2, 4, 5).contiguous().view(-1, window_size, window_size, C)return windows在第1个stage中不同的stage中会做下采样操作 B, H, W, C torch.Size([4, 56, 56, 96])这是函数的原始输入56*56等于原来的3136x torch.Size([4, 8, 7, 8, 7, 96])windows torch.Size([256, 7, 7, 96])256的计算方法为原始数据为5656要分出77大小为一个窗口所以窗口数量为(56/7)(56/7)8864而64需要乘上batch4所以就是256向量维度96不变 而Windows Attention就是在这7*7里面的窗口进行计算 SwinTransformer 算法原理 SwinTransformer 源码解读1项目配置/SwinTransformer类 SwinTransformer 源码解读2PatchEmbed类/BasicLayer类 SwinTransformer 源码解读3SwinTransformerBlock类 SwinTransformer 源码解读4WindowAttention类 SwinTransformer 源码解读5Mlp类/PatchMerging类
http://www.zqtcl.cn/news/791707/

相关文章:

  • 温州网站提升排名打开搜索引擎
  • 企业市场网络推广方案优化方案答案
  • 茂名网站建设咨询wordpress官网上的主题收费吗
  • 如何自己开发网站WordPress修改前端
  • 哪些网站用黑体做的谁给个网站啊急急急2021
  • aspnet网站开发选择题怎样建设网站是什么样的
  • 专业建站公司电话咨询做暧小视频免费视频在线观看网站
  • 移动软件开发专业seo快排技术教程
  • 怎么推广自己的网站wordpress 管理员
  • 百度权重查询爱站网北京市官方网站
  • 网站代码图片如何查看一个网站流量
  • 上海网站建设公司联系方式自己做的网站主页打开速度
  • 地方网站 源码中国建设银行网站快速查询
  • 有做网站需求的客户网站建设方案就玄苏州久远网络
  • 安徽网站建设方案开发i深圳谁开发的
  • 仿站 做网站seo内容优化是什么
  • 怎么进行网站优化wordpress wampserver
  • 德州市经济开发区建设局网站360免费建站怎么进不去
  • 免费黄页营销网站用wordpress写公司官网
  • 网站建立的研究方案注册公司需要怎么注册
  • 云服务器怎么做网站右26cm
  • php网站的部署老虎淘客系统可以做网站吗
  • 建设一个网站的技术可行性研究怎么找网红合作卖东西
  • 深圳网站设计师培训学校大气全屏通用企业网站整站源码
  • 献县网站建设价格动漫网站设计方案
  • 怎样制作网站电话怎么做网络推广优化
  • 自己有服务器如何建设微网站网站建设的开发方式和费用
  • 网站如何接入支付宝可以看网站的浏览器
  • 档案网站建设的原则网页设计html代码可以查重吗
  • 万宁网站建设公司新乡市延津县建设局网站