Seq2Seq模型定义

发布时间:2026/10/14 13:59:51

Seq2Seq模型定义 1、编码器class TranslationEncoder(nn.Module): def __init__(self,vocab_size,padding_index): super().__init__() self.embedding nn.Embedding(vocab_size, config.EMBEDDING_DIM,padding_idxpadding_index) self.gru nn.GRU(config.EMBEDDING_DIM, config.ENCODER_HIDDEN_SIZE, num_layersconfig.ENCODER_LAYERS, batch_firstTrue, bidirectionalTrue) def forward(self, x, hiddenNone): embed self.embedding(x) output, hidden self.gru(embed) # 第二层的hidden的反向最后一个隐藏状态 # 只包含从结尾到开头的信息 缺少前文对后文的上下文 last_hidden_backward hidden[-1] # 第二层的hidden的前向最后一个隐藏状态 # 只包含从开头到结尾的信息 缺少后文对前文的上下文 last_hidden_forward hidden[-2] # 两个独立的全局向量它们分别掌握单向上下文通过拼接dim-1就是将特征维度拼在一起合并两套全局上下文。 context_vector torch.cat([last_hidden_forward,last_hidden_backward],dim-1) return context_vector1图形描述gru torch.nn.GRU() output, h_n gru(input, h_0)①单层双向h_n[0]是正向的最后一个隐藏状态h_n[1]是反向的最后一个隐藏状态②双层双向h_n[0]是第一层的正向的最后一个隐藏状态h_n[1]是第一层的反向的最后一个隐藏状态h_n[-1]是第二层的反向的最后一个隐藏状态h_n[-2]是第二层的正向的最后一个隐藏状态。代码中的context_vector torch.cat([last_hidden_forward,last_hidden_backward],dim-1)是隐藏状态的拼接为后面解码器做准备。2、解码器class TranslationDecoder(nn.Module): def __init__(self,vocab_size,padding_index): super().__init__() self.embedding nn.Embedding(vocab_size, config.EMBEDDING_DIM, padding_idxpadding_index) self.gru nn.GRU(config.EMBEDDING_DIM, config.DECODER_HIDDEN_SIZE, batch_firstTrue) self.linear nn.Linear(config.DECODER_HIDDEN_SIZE, vocab_size) def forward(self, x, hidden_0): #x: (batch_size, 1) sos 一次只输入 1 个 token embed self.embedding(x) #embed: (batch_size, 1, EMBEDDING_DIM) # hidden_0是编码器传过来的 output, hidden_n self.gru(embed, hidden_0) #output: (batch_size, 1, DECODER_HIDDEN_SIZE) #hidden_n: (1, batch_size, DECODER_HIDDEN_SIZE) output self.linear(output) #output: (batch_size, 1, vocab_size) return output, hidden_n
延伸阅读

更多相关文章

2026/10/14 13:59:51

Rational Rose 2017完全指南:UML建模、反向工程与代码生成实战

1. 为什么2025年还有人学Rational Rose:这款老工具的核心价值先说说我自己碰到的场景。前阵子帮A同学调试一个老项目的设计文档,他发过来一个 .mdl 后缀的文件,我问他用什么工具打开,他说"老师让用Rational Rose 2017"。…

2026/10/14 13:59:51

双11大促Spark离线数据分析实战:从清洗到调优全链路拆解

双11大促的实时数据量有多大?很多人问我用Spark做大促数据分析到底难不难。今年我全程参与了一套双11大促离线数据分析项目,从原始订单日志清洗到核心业务指标计算,再到结果可视化,完整的Spark分析链路跑下来,踩了不少…

2026/10/14 13:59:51

2026工业预测性维护落地实战指南

1. 为什么2026年必须用AI做预测性维护,而不是继续修坏了再换?我去年在华东一家中型轴承制造厂蹲点三个月,亲眼看着他们产线上一台价值187万的数控磨床突然停机。故障代码显示“主轴温度异常”,维修师傅拆开后发现是冷却油路堵塞—…

2026/10/14 15:15:12

Qt实现Windows远程控制:TCP自定义协议与抓屏编码实战

简介:这是一套基于Qt框架实现的Windows平台远程控制软件源码与可执行程序,面向具备一定C与Qt基础的开发者、课程设计或毕业设计参考者,用于学习网络通信、屏幕图像采集与远程桌面控制等核心机制。压缩包共40个文件,约6.08MB&#…

2026/10/14 15:15:12

CAS+SpringMVC+Shiro单点登录集成实战与避坑指南

简介:本资源是一套将CAS、SpringMVC与Shiro三者整合实现单点登录(SSO)的完整实践示例,面向具备一定Java Web基础、希望深入理解SSO认证流程与安全框架集成的开发者。内容围绕CAS服务端与客户端配置、Shiro的CasRealm与CasFilter定…

2026/10/14 15:15:12

Tomcat与国产中间件技术选型对比与实践

1. 中间件技术选型的时代背景在数字化转型浪潮中,Web中间件作为企业级应用的基石,其技术选型直接影响着系统稳定性、开发效率和运维成本。过去十年间,以Tomcat为代表的开源中间件与国产中间件形成了明显的技术分野。我在实际项目中发现&#…

2026/10/14 15:15:12

基于Transformer的聊天机器人Python源码实战:环境搭建、训练与推理

简介:这是一份基于Transformer模型构建的聊天机器人Python源码包,面向具备一定Python基础、希望动手实践对话系统或完成课程设计的开发者。使用者输入文本后,系统即可根据语义生成相应回答,实现日常聊天功能。资源包共367个文件&a…

2026/10/14 15:15:12

Tomcat与国产中间件技术选型及性能对比分析

1. 中间件技术选型的核心考量在构建企业级应用系统时,Web中间件的选择往往直接影响系统的稳定性、性能表现和长期维护成本。作为从业十五年的架构师,我见证过从传统商业中间件到开源解决方案的技术演进,也参与过多次国产化替代的技术评估。To…

2026/10/14 15:10:11

SpringBoot电商系统开发:实体专辑购买平台实战

1. 项目背景与核心价值最近帮几个计算机专业的学生指导毕业设计,发现不少同学对电商类项目情有独钟。其中"环星实体专辑购买系统"这个选题特别有意思——既结合了当下音乐消费的热潮,又能完整覆盖SpringBoot技术栈的实践要点。作为一个经历过三…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/13 17:09:18

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/14 2:32:55

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/14 0:00:33

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:33

macOS/iOS高精度计时:mach_absolute_time原理与实战

1. 项目概述:为什么mach_absolute_time是 macOS/iOS 时间测量的“黄金标准”在 macOS 和 iOS 开发中,我见过太多人用CFAbsoluteTimeGetCurrent()或NSDate.timeIntervalSinceReferenceDate做性能打点,结果在高精度场景下被系统时钟跳变、NTP 同…

2026/10/14 0:00:33

SCORM课件演示与测试全解析:从API通信到自动化验证

简介:这是一套遵循SCORM标准的交互式课件演示与测试资源,面向E-Learning课程开发者、LMS平台测试人员及在线教学从业者,用于验证课件在不同学习管理系统中的识别、传递与跟踪能力。压缩包共28个文件,约12.07MB,以swf动…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑