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

企业做网站需要注意什么问题电子商务网站开发的步骤

企业做网站需要注意什么问题,电子商务网站开发的步骤,哈尔滨seo推广公司,成都网站建设 四川冠辰网站建设整体结构 1. 嵌入层#xff08;Embedding Layer#xff09; 生活中的例子#xff1a;字典查找 想象你在读一本书#xff0c;你不认识某个单词#xff0c;于是你查阅字典。字典为每个单词提供了一个解释#xff0c;帮助你理解这个单词的意思。嵌入层就像这个字典#xf…整体结构 1. 嵌入层Embedding Layer 生活中的例子字典查找 想象你在读一本书你不认识某个单词于是你查阅字典。字典为每个单词提供了一个解释帮助你理解这个单词的意思。嵌入层就像这个字典它将每个单词或输入序列中的每个标记映射到一个高维向量解释这个向量包含了单词的各种语义信息。 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset import mathclass EmbeddingLayer(nn.Module):def __init__(self, vocab_size, d_model, max_seq_length512):super(EmbeddingLayer, self).__init__()# vocab_size: 词汇表的大小即输入序列中可能的不同标记的总数。# d_model: 每个嵌入向量的维度即词嵌入向量的长度。# max_seq_length: 序列的最大长度用于位置嵌入。self.embedding nn.Embedding(vocab_size, d_model) # 词嵌入层self.pos_embedding nn.Embedding(max_seq_length, d_model) # 位置嵌入层self.d_model d_model# 初始化位置编码pe torch.zeros(max_len, d_model)# 生成词位置列表position torch.arange(0, max_len).unsqueeze(1)# 根据公式计算词位置参数div_term torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model))# 生成词位置矩阵my_matmulres position * div_term# 给位置编码矩阵奇数列赋值sin曲线特征pe[:, 0::2] torch.sin(my_matmulres)# 给位置编码矩阵偶数列赋值cos曲线特征pe[:, 1::2] torch.cos(my_matmulres)# 形状变化 [max_seq_length,d_model]--[1,max_seq_length,d_model]pe pe.unsqueeze(0)# 把pe位置编码矩阵 注册成模型的持久缓冲区buffer; 模型保存再加载时可以根模型参数一样一同被加载# 什么是buffer: 对模型效果有帮助的但是却不是模型结构中超参数或者参数不参与模型训练self.register_buffer(pe, pe)def forward(self, x):seq_length x.size(1) # 序列长度pos torch.arange(0, seq_length, devicex.device).unsqueeze(0) # 生成位置索引return self.embedding(x) * math.sqrt(self.d_model) self.pe[:,:x.size()[-1], :] # 词嵌入和位置嵌入相加2. 多头自注意力机制Multi-Head Self-Attention 生活中的例子小组讨论 想象你在一个小组讨论中每个人每个位置上的单词都提出自己的观点Query并听取其他人的意见Key和Value。每个人对所有其他人的观点进行加权平均以形成自己的新观点。多头注意力机制类似于多个小组同时进行讨论每个小组从不同的角度头讨论问题然后将所有讨论结果合并在一起。 class MultiHeadSelfAttention(nn.Module):def __init__(self, d_model, nhead):super(MultiHeadSelfAttention, self).__init__()# d_model: 输入和输出的维度即每个位置的特征向量的长度。# nhead: 注意力头的数量多头注意力机制中并行的注意力计算数。self.nhead nheadself.d_model d_model# 定义线性变换层self.q_linear nn.Linear(d_model, d_model)self.k_linear nn.Linear(d_model, d_model)self.v_linear nn.Linear(d_model, d_model)self.out_linear nn.Linear(d_model, d_model)self.scale (d_model // nhead) ** 0.5 # 缩放因子def forward(self, x):batch_size x.size(0) # 获取批大小# 线性变换并分成多头q self.q_linear(x).view(batch_size, -1, self.nhead, self.d_model // self.nhead).transpose(1, 2)k self.k_linear(x).view(batch_size, -1, self.nhead, self.d_model // self.nhead).transpose(1, 2)v self.v_linear(x).view(batch_size, -1, self.nhead, self.d_model // self.nhead).transpose(1, 2)# 计算注意力得分scores torch.matmul(q, k.transpose(-2, -1)) / self.scaleattn torch.nn.functional.softmax(scores, dim-1) # 计算注意力权重context torch.matmul(attn, v).transpose(1, 2).contiguous().view(batch_size, -1, self.d_model) # 加权求和out self.out_linear(context) # 最后一层线性变换return out3. 前馈神经网络Feed-Forward Network 生活中的例子信息过滤和处理 想象你在整理会议纪要需要对会议地录音进行归纳、总结和补充。前馈神经网络类似于这个过程它对输入的信息进行进一步处理和转换以提取重要特征。 class FeedForwardNetwork(nn.Module):def __init__(self, d_model, dim_feedforward, dropout0.1):super(FeedForwardNetwork, self).__init__()# d_model: 输入和输出的维度即每个位置的特征向量的长度。# dim_feedforward: 前馈神经网络的隐藏层维度。# dropout: 在前馈神经网络中使用的dropout比率用于正则化。self.linear1 nn.Linear(d_model, dim_feedforward) # 第一个线性层self.dropout nn.Dropout(dropout) # dropout层self.linear2 nn.Linear(dim_feedforward, d_model) # 第二个线性层def forward(self, x):return self.linear2(self.dropout(torch.nn.functional.relu(self.linear1(x)))) # 激活函数ReLU和dropout4. 层归一化Layer Normalization 生活中的例子团队合作中的标准化 想象你在一个团队中工作每个人都有不同的工作习惯和标准。为了更好地合作团队决定采用统一的工作标准如文档格式、命名规范等。层归一化类似于这种标准化过程它将输入归一化使得每个特征的均值为0标准差为1以稳定和加速训练。 class LayerNorm(nn.Module):def __init__(self, d_model, eps1e-6):super(LayerNorm, self).__init__()# d_model: 输入和输出的维度即每个位置的特征向量的长度。# eps: 用于数值稳定的小值防止除以零。self.gamma nn.Parameter(torch.ones(d_model)) # 缩放参数self.beta nn.Parameter(torch.zeros(d_model)) # 偏移参数self.eps eps # epsilon用于数值稳定def forward(self, x):mean x.mean(dim-1, keepdimTrue) # 计算均值std x.std(dim-1, keepdimTrue) # 计算标准差return self.gamma * (x - mean) / (std self.eps) self.beta # 归一化5. 残差连接Residual Connection 生活中的例子备忘录 想象你在会议上记了很多笔记。为了确保不会遗漏任何重要信息你在总结时会参照这些笔记。残差连接类似于这个过程它将每层的输入直接加到输出上确保信息不会在层与层之间丢失。 class ResidualConnection(nn.Module):def __init__(self, d_model, dropout0.1):super(ResidualConnection, self).__init__()# d_model: 输入和输出的维度即每个位置的特征向量的长度。# dropout: 在残差连接中使用的dropout比率用于正则化。self.norm LayerNorm(d_model) # 层归一化self.dropout nn.Dropout(dropout) # dropout层def forward(self, x, sublayer):return x self.dropout(sublayer(self.norm(x))) # 残差连接6. 编码器层Encoder Layer 生活中的例子多轮面试 想象你在参加多轮面试每轮面试都有不同的考官考察不同的方面如专业知识、沟通能力等。每轮面试都帮助你更全面地展示自己。编码器层类似于这种多轮面试的过程每层处理输入序列的不同方面逐层提取和增强特征。 class EncoderLayer(nn.Module):def __init__(self, d_model, nhead, dim_feedforward, dropout0.1):super(EncoderLayer, self).__init__()# d_model: 输入和输出的维度即每个位置的特征向量的长度。# nhead: 注意力头的数量多头注意力机制中并行的注意力计算数。# dim_feedforward: 前馈神经网络的隐藏层维度。# dropout: 在各层中使用的dropout比率用于正则化。self.self_attn MultiHeadSelfAttention(d_model, nhead) # 多头自注意力机制self.feed_forward FeedForwardNetwork(d_model, dim_feedforward, dropout) # 前馈神经网络self.sublayers nn.ModuleList([ResidualConnection(d_model, dropout) for _ in range(2)]) # 两个子层注意力和前馈网络def forward(self, src):src self.sublayers[0](src, lambda x: self.self_attn(x)) # 应用自注意力机制src self.sublayers[1](src, self.feed_forward) # 应用前馈神经网络return src7. 解码器层Decoder Layer 生活中的例子逐步解谜 想象你在玩一个解谜游戏每解决一个谜题每层解码器你都会得到新的线索逐步解开整个谜题。解码器层类似于这种逐步解谜的过程每层结合当前解码的结果和编码器的输出逐步生成目标序列。 class DecoderLayer(nn.Module):def __init__(self, d_model, nhead, dim_feedforward, dropout0.1):super(DecoderLayer, self).__init__()# d_model: 输入和输出的维度即每个位置的特征向量的长度。# nhead: 注意力头的数量多头注意力机制中并行的注意力计算数。# dim_feedforward: 前馈神经网络的隐藏层维度。# dropout: 在各层中使用的dropout比率用于正则化。self.self_attn MultiHeadSelfAttention(d_model, nhead) # 多头自注意力机制self.cross_attn MultiHeadSelfAttention(d_model, nhead) # 编码器-解码器注意力self.feed_forward FeedForwardNetwork(d_model, dim_feedforward, dropout) # 前馈神经网络self.sublayers nn.ModuleList([ResidualConnection(d_model, dropout) for _ in range(3)]) # 三个子层自注意力、交叉注意力、前馈网络def forward(self, tgt, memory):tgt self.sublayers[0](tgt, lambda x: self.self_attn(x)) # 应用自注意力机制tgt self.sublayers[1](tgt, lambda x: self.cross_attn(x, memory)) # 应用编码器-解码器注意力tgt self.sublayers[2](tgt, self.feed_forward) # 应用前馈神经网络return tgt8. 编码器Encoder class Encoder(nn.Module):def __init__(self, num_layers, d_model, nhead, dim_feedforward, dropout0.1):super(Encoder, self).__init__()# num_layers: 编码器层的数量即堆叠的编码器层数。# d_model: 输入和输出的维度即每个位置的特征向量的长度。# nhead: 注意力头的数量多头注意力机制中并行的注意力计算数。# dim_feedforward: 前馈神经网络的隐藏层维度。# dropout: 在各层中使用的dropout比率用于正则化。self.layers nn.ModuleList([EncoderLayer(d_model, nhead, dim_feedforward, dropout) for _ in range(num_layers)]) # 堆叠多个编码器层def forward(self, src):for layer in self.layers:src layer(src) # 依次通过每个编码器层return src9. 解码器Decoder class Decoder(nn.Module):def __init__(self, num_layers, d_model, nhead, dim_feedforward, dropout0.1):super(Decoder, self).__init__()# num_layers: 解码器层的数量即堆叠的解码器层数。# d_model: 输入和输出的维度即每个位置的特征向量的长度。# nhead: 注意力头的数量多头注意力机制中并行的注意力计算数。# dim_feedforward: 前馈神经网络的隐藏层维度。# dropout: 在各层中使用的dropout比率用于正则化。self.layers nn.ModuleList([DecoderLayer(d_model, nhead, dim_feedforward, dropout) for _ in range(num_layers)]) # 堆叠多个解码器层def forward(self, tgt, memory):for layer in self.layers:tgt layer(tgt, memory) # 依次通过每个解码器层return tgt10. Transformer模型 class TransformerModel(nn.Module):def __init__(self, vocab_size, d_model, nhead, num_encoder_layers, num_decoder_layers, dim_feedforward, dropout0.1):super(TransformerModel, self).__init__()# vocab_size: 词汇表的大小即输入序列中可能的不同标记的总数。# d_model: 每个嵌入向量的维度即词嵌入向量的长度。# nhead: 注意力头的数量多头注意力机制中并行的注意力计算数。# num_encoder_layers: 编码器层的数量即堆叠的编码器层数。# num_decoder_layers: 解码器层的数量即堆叠的解码器层数。# dim_feedforward: 前馈神经网络的隐藏层维度。# dropout: 在各层中使用的dropout比率用于正则化。self.embedding EmbeddingLayer(vocab_size, d_model) # 嵌入层self.encoder Encoder(num_encoder_layers, d_model, nhead, dim_feedforward, dropout) # 编码器self.decoder Decoder(num_decoder_layers, d_model, nhead, dim_feedforward, dropout) # 解码器self.fc nn.Linear(d_model, vocab_size) # 最后一层线性变换将输出维度映射到词汇表大小def forward(self, src, tgt):src self.embedding(src) # 嵌入输入序列tgt self.embedding(tgt) # 嵌入目标序列memory self.encoder(src) # 编码器处理输入序列output self.decoder(tgt, memory) # 解码器处理目标序列output self.fc(output) # 映射到词汇表大小return output训练示例 # 参数 # vocab_size: 词汇表的大小即输入序列中可能的不同标记的总数。 # d_model: 每个嵌入向量的维度即词嵌入向量的长度。 # nhead: 注意力头的数量多头注意力机制中并行的注意力计算数。 # num_encoder_layers: 编码器层的数量即堆叠的编码器层数。 # num_decoder_layers: 解码器层的数量即堆叠的解码器层数。 # dim_feedforward: 前馈神经网络的隐藏层维度。 # dropout: 在各层中使用的dropout比率用于正则化。 # batch_size: 每个训练批次中的样本数量。 # seq_length: 输入序列的长度。 # num_epochs: 训练的轮数即遍历整个训练集的次数。 vocab_size 1000 d_model 512 nhead 8 num_encoder_layers 6 num_decoder_layers 6 dim_feedforward 2048 dropout 0.1 batch_size 32 seq_length 10 num_epochs 10# 数据集 src torch.randint(0, vocab_size, (batch_size, seq_length)) tgt torch.randint(0, vocab_size, (batch_size, seq_length))dataset TensorDataset(src, tgt) dataloader DataLoader(dataset, batch_sizebatch_size, shuffleTrue)# 模型实例 model TransformerModel(vocab_size, d_model, nhead, num_encoder_layers, num_decoder_layers, dim_feedforward, dropout)# 损失函数和优化器 criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lr0.001)# 训练 for epoch in range(num_epochs):for src_batch, tgt_batch in dataloader:tgt_input tgt_batch[:, :-1] # 目标输入tgt_output tgt_batch[:, 1:] # 目标输出optimizer.zero_grad()output model(src_batch, tgt_input) # 前向传播output output.permute(1, 2, 0) # 调整形状以匹配损失函数loss criterion(output, tgt_output) # 计算损失loss.backward() # 反向传播optimizer.step() # 更新参数print(fEpoch {epoch1}/{num_epochs}, Loss: {loss.item()})print(训练完成)代码说明 EmbeddingLayer将输入序列和位置嵌入映射到高维空间。MultiHeadSelfAttention实现多头自注意力机制包括查询、键和值的线性变换和注意力计算。FeedForwardNetwork前馈神经网络用于进一步处理特征。LayerNorm层归一化用于稳定训练过程。ResidualConnection残差连接帮助训练更深的网络。EncoderLayer将多头自注意力机制和前馈神经网络组合在一起形成编码器层。DecoderLayer包括多头自注意力机制、编码器-解码器注意力和前馈神经网络形成解码器层。Encoder由多个编码器层堆叠而成。Decoder由多个解码器层堆叠而成。TransformerModel将编码器和解码器组合在一起形成完整的Transformer模型。
http://www.dnsts.com.cn/news/266319.html

相关文章:

  • 服务好的网站设计中铁建发展集团有限公司
  • 运城环保局网站王建设ppt模板红色主题
  • 可以专做福特配件吗外贸网站crm系统的销售管理功能包括
  • 网站推广做多大尺寸php开源免费网站模板
  • 网上接网站项目网站非法字符过滤
  • 网站开发建设方案书网站规划的主要内容
  • 港口建设征收 申报网站中国的网站域名是什么意思
  • 网站数据库如何导入数据库文件软件下载网站制作
  • 建设营销型网站的步骤做网站的技术员
  • 怎么做qq刷赞网站直接翻译网页的软件
  • 中国空间站24小时直播入口青岛房产网上备案查询
  • 建筑人才网站做网站的怎么学
  • 为什么要注册中文域名官网seo
  • 网站推广是网站建设完成之后的长期工作。网站后台管理模板下载
  • 网站建设捌金手指下拉八网站开发费记什么会计科目
  • 网站广告弹出来代码网站左侧的导航是怎么做的
  • 武安城乡建设网站技术支持 英铭网站建设
  • 网站一般用什么免费字体宁波网站建设慕枫科技
  • 电子商务网站的后台管理系统北京网站设计联系电话
  • 深圳彩票网站开发人员惠州小程序开发
  • 网站视频打不开什么原因网站定制开发 广州
  • 重庆哪里可以学习网站建设和维护宁波网络公司招聘信息
  • 为什么网站找不到了引擎搜索网站
  • 网站搭建需要多少钱?网站建设用啥技术
  • 开源企业网站如何写app程序
  • 如何建设一个国外网站聊城企业做网站推广
  • 网站制作方案模板介绍湛江网站
  • 宁国新站seo大学生创业2月亏3万
  • 大型企业网站制作wordpress企业主题模板
  • 哪个网站做汽车分期展厅设计行业平台