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

营销型网站建设概述网站建设策划书提纲

营销型网站建设概述,网站建设策划书提纲,软件生命周期6个阶段,中国品牌建设促进会网站对于输入#xff08;1#xff0c;3#xff0c;32#xff0c;32#xff09;和使用 patch size 为 8 的设置#xff0c;维度变化的步骤可以总结为以下过程#xff1a; 图像块的提取#xff1a; 使用 patch size 为 (8, 8) 将输入图像划分为图像块。#xff08;32//8133232和使用 patch size 为 8 的设置维度变化的步骤可以总结为以下过程 图像块的提取 使用 patch size 为 (8, 8) 将输入图像划分为图像块。32//8*32//816个图像块对应image_sequence_length维度变为116388。 展平成向量 将每个图像块展平为长度为 8 * 8 * 3 的向量。维度变为116192。 加入 Class Token 和 位置嵌入 添加 Class Token将维度变为117192。添加位置嵌入(相加最终维度仍为117192。 线性投影 使用线性投影将维度投影到 input_dim1024可变。对应input_dim维度变为1171024。transformer 多头自注意力机制Multi-Head Self-Attention 如果默认的头数是 h通常为 12并且头维度head dim是 d_h通常为 64则每个头产生的输出维度为11764。embed_dim对应d_h*h线性变换得到 Q, K, V 对输入进行三个线性变换得到Q,K,V每个变换的权重矩阵维度为 (d_model​,d_h*h​)即(1024-12x64768)。h为头的个数Q 的维度为 (1,17,d_h*h​)K 的维度为 (1,17,d_h*h​)V 的维度为 (1,17,d_h*h​)。这可以用矩阵相乘的方式实现QX⋅Wq​,KX⋅Wk​,VX⋅Wv​其中 X 是输入张量。 拆分为多头 将得到的 Q,K,V 分别拆分为 h 个头每个头的维度为 (1,17,d_h)。这里的拆分是在最后一维上进行的。 注意力计算 对每个头进行注意力计算得到注意力分数。注意力计算包括对 Q 和 K 进行点积然后进行缩放操作最后应用 softmax 函数。将注意力分数乘以 V得到每个头的注意力输出(1,17,d_h)。 合并多头输出 将每个头的注意力输出按最后一维度进行连接concatenate得到多头注意力的输出。多头注意力的输出的维度为 (1,17,768)。这里768h*d_h映射为1171024加残差维度不变1171024LayerNormalization 和 Feedforward 对于每个位置进行 LayerNormalization 维度不变1171024。Feedforward 网络 如果默认的 Feedforward 网络的中间维度为 2048 输入维度1171024变化为1172048输出维度1171024加残差维度不变11710241171024全局池化或者只取cls token11024mlp输出1000类-11000 图 更新补充代码实现 分组件实现 分别对应上图右边模块 Norm class PreNorm(nn.Module):def __init__(self,dim,fn):#fn指norm之后的函数 如上图可以接mha或者mlpsuper().__init__()self.norm nn.LayerNorm(dim)self.fn fndef forward(self,x):return self.fn(self.norm(x)) Multi-Head Attention 相对于别人用einsum的写法我的更加直白适合新手阅读 class MultiheadAttention(nn.Module):def __init__(self,input_dim,embed_dim,num_heads8):#embed_dim写的是多头的总dim即head_dim*num_heads#你也可以修改成输入为num_heads和head_dimsuper().__init__()#self.mha nn.MultiheadAttention(hid_dim,num_heads)self.embed_dim embed_dimself.num_heads num_headsself.head_dim embed_dim//num_headsself.W_q nn.Linear(input_dim, embed_dim)self.W_k nn.Linear(input_dim, embed_dim)self.W_v nn.Linear(input_dim, embed_dim)self.to_out nn.Linear(embed_dim, input_dim)def forward(self, x):# (batch_size, seq_length, embed_dim)# 例如32*32的图 取patchsize为8则image_sequence_length为32//8*32//8 16# image_sequence_length也就是块的个数batch_size, image_sequence_length, _ x.shape# 应用线性变换生成Q, K, VQ self.W_q(x).view(batch_size, image_sequence_length, self.num_heads, self.head_dim).transpose(1, 2)#实际为(batch_size, self.num_heads, image_sequence_length, self.head_dim)K self.W_k(x).view(batch_size, image_sequence_length, self.num_heads, self.head_dim).transpose(1, 2)V self.W_v(x).view(batch_size, image_sequence_length, self.num_heads, self.head_dim).transpose(1, 2)#得到(b,num_heads,image_sequence_length,image_sequence_length)attn_scores torch.matmul(Q, K.transpose(-2, -1)) / (self.head_dim ** 0.5)# 应用Softmax获取注意力权重# 计算块与块之间的注意力attn_weights torch.softmax(attn_scores, dim-1)# 使用注意力权重加权Vattn_output torch.matmul(attn_weights, V)attn_output attn_output.view(batch_size, image_sequence_length, self.embed_dim)return self.to_out(attn_output) MLP #ffn也就是mlp class FeedForward(nn.Module):def __init__(self,dim,hidden_dim,drop_out0.3):super().__init__()self.net nn.Sequential(nn.Linear(dim,hidden_dim),nn.GELU(),nn.Dropout(drop_out),nn.Linear(hidden_dim,dim),nn.Dropout())def forward(self,x):return self.net(x) 整合transformer block class Transformer(nn.Module):def __init__(self,input_dim,depth,embed_dim,mlp_dim,num_heads) - None:super().__init__()self.layers nn.ModuleList()for _ in range(depth):self.layers.append(nn.ModuleList([PreNorm(input_dim,MultiheadAttention(input_dim,embed_dim,num_heads)),PreNorm(input_dim,FeedForward(input_dim,mlp_dim))]))def forward(self,x):for attn,ff in self.layers:#norm-mha-残差-norm-mlp-加残差x attn(x)xx ff(x)xreturn x 整合VIT class VIT(nn.Module):def __init__(self,image_size,patch_size,num_classes,input_dim,depth,embed_dim,mlp_dim,heads,channels3,poolcls) - None:super().__init__()assert image_size%patch_size0num_patches (image_size//patch_size)*(image_size//patch_size)patch_dim channels*patch_size*patch_sizeself.to_patch_embedding nn.Sequential(Rearrange(b c (h p1) (w p2) - b (h w) (p1 p2 c), p1patch_size, p2patch_size),nn.Linear(patch_dim,input_dim))self.pos_embedding nn.Parameter(torch.randn(1, num_patches1, input_dim))self.cls_token nn.Parameter(torch.randn(1,1,input_dim))self.transformer Transformer(input_dim,depth,embed_dim,mlp_dim,heads)self.pool poolself.to_latent nn.Identity()self.mlp_head nn.Sequential(nn.LayerNorm(input_dim),nn.Linear(input_dim,num_classes))def forward(self,img):x self.to_patch_embedding(img) # b c (h p1) (w p2) - b (h w) (p1 p2 c) - b (h w) dimb,n,_ x.shape #(b,16,dim)cls_tokens repeat(self.cls_token,() n d - b n d,bb) x torch.cat((cls_tokens,x),dim1) # 将cls_token拼接到patch token中去(b,17,dim)x self.pos_embedding[:,:(n1)]#利用广播机制直接相加(b, 17, dim)x self.transformer(x)#(b, 17, dim)x x.mean(dim1) if self.pool mean else x[:,0]# (b, dim)#可以看到如果指定池化方式为mean的话则会对全部token做平均池化然后全部进行送到mlp中但是我们可以看到默认的self.poolcls也就是说默认不会进行平均池化而是按照ViT的设计只使用cls_token即x[:, 0]只取第一个tokencls_token。x self.to_latent(x) # Identity (b, dim)#print(x.shape)return self.mlp_head(x) 测试 model_vit VIT(image_size 32,patch_size 8,num_classes 1000,input_dim 1024,embed_dim 768,depth 6,heads 12,mlp_dim 2048,)img torch.randn(1, 3, 32, 32)preds model_vit(img) print(preds.shape) # (1, 1000)
http://www.w-s-a.com/news/756482/

相关文章:

  • 云主机网站的空间在哪制作微网站的平台
  • 长沙做网站 青创互联wordpress4.4.1
  • 宜昌哪里有专业做网站的网站开发做什么的
  • 3小说网站开发东莞网站公司哪家好
  • 做网站安全联盟解ps网站设计概述
  • 聊城公司做网站wordpress连接域名
  • 宣传网站建设的意义台州行app官网下载
  • 温州 网站优化网站开发公司前置审批
  • 网站开发具体的工作内容网站下载app免费
  • seo网站建设时文章频率昆山网站建设ikelv
  • 中天建设中瑞物资网站优化建立生育支持政策体系
  • 网站页面的宽度大网站怎样选域名
  • icp网站备案流程wordpress post 405
  • 网站怎样上传到空间重庆有多少网站
  • 用模板建商城购物网站嘉定专业网站建设
  • 网站开发与应用 论文dede手机医院网站模板
  • 织梦 网站栏目管理 很慢自学网页设计难吗
  • 茶文化建设网站的意义平顶山网站建设服务公司
  • 建设网站详细流程南京宣传片制作公司
  • 合肥网站排名什么网站做电气自动化兼职
  • 如何用api做网站交通建设门户网站
  • 阳西住房和城乡规划建设局网站长沙网站seo技巧
  • 长沙知名网站推广手机画设计图软件
  • 顺德公司做网站自己有网站怎么优化
  • 南京网站开发南京乐识专业外贸流程知乎
  • 盐田区住房和建设局网站分类网站有哪些
  • 建一个团购网站WordPress文章字号设置
  • 做漂亮的网站东营网站seo
  • 网站开发摊销做设计哪个网站可以接单
  • 惠州h5网站建设建设公司网站报价