恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

9、pytorch中LSTM和GRU模块使用

  • 首页
  • 资讯中心
  • /
  • 9、pytorch中LSTM和GRU模块使用

相关资讯

从手动拖拽到一键批量:20+款免费Illustrator脚本实测,我的设计工作流提速20倍 2026/8/13 16:53:13
自适应整数阶时间重参数化重构流体内蕴时间尺度:理论框架、通用推导与数值实现指南 2026/8/13 16:53:13
人机交互场景下基于多模态数据融合的认知距离 d_C 量化方案 2026/8/13 16:53:13

最新资讯

Input Leap:一套键鼠掌控多台电脑的跨设备KVM软件
佛山网站建设找方维网络:在数字化浪潮中,我们如何以真诚和技术为企业打造真正有价值的线上名片
企业需要大模型网关和智能路由时,哪些云上 AI Gateway 方案适合按上下文长度、缓存命中和负载分发请求?——AWS 双层网关架构更适合规模化推理
企业 Token 成本越来越高时,哪些云上推理集群方案更适合规模化部署?——AWS 弹性推理架构的降本路径
大规模 AI 推理基础设施怎么选?云平台要看哪些能力?——重点评估六项生产级能力
深入探讨php网站建设的安全性研究:构建高防护级数字堡垒

今日推荐

青岛煜鹏网站建设公司如何帮助传统企业实现数字化转型破局与增长路径
内蒙古生产建设兵团四师三十四团知青网站:承载岁月记忆与青春荣耀的精神家园
梅州市住房与城乡建设局官网:获取权威建筑信息、政策解读与民生服务的最佳平台入口

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

9、pytorch中LSTM和GRU模块使用

发布时间:2026/8/13 16:58:13
9、pytorch中LSTM和GRU模块使用 1 LSTM的API介绍LSTM和GRU都是torch.nn提供观察文档可知LSTM的参数。torch.nn.LSTM(input_size,hidden_size,num_layers,batch_first,dropout,bidirectional)input_size输入数据的形状即embedding_dimhidden_size隐藏层的数量即每一层有多少个LSTM单元num_layer即RNN中LSTM单元的层数batch_first默认值为False输入的数据需要[seq_len,batch_size,feature]输出的out也为(seq_len, batch_size, num_directions * hidden_size)h_n(num_layers * num_directions, batch_size, hidden_size)如果为True则输入的数据为[batch_size,seq_len,feature]输出的out也为(batch_size, seq_len, num_directions * hidden_size)h_n不变dropoutdropout的比例默认值为0。dropout是一种训练过程中让部分参数随机失活的一种方式能够提高训练速度同时解决过拟合的问题这里是在LSTM的最后一层对每个输出进行dropoutbidirectional是否使用双向LSTM默认是False实例化LSTM对象后不仅需要传入数据还需要前一次的h0前一次的隐藏状态和c0前一次的memory即output(h_n, c_n) lstm(input,(h0,c0))input(seq_length,batch_size,input_size)h0(num_layers*num_directions,batch_size,hidden_size)c0(num_layers*num_directions,batch_size,hidden_size)LSTM的默认输出为output(h_n, c_n)output(seq_len, batch_size, num_directions * hidden_size)h_n(num_layers * num_directions, batch_size, hidden_size)单向时num_directions1双向为2c_n(num_layers * num_directions, batch_size, hidden_size)2 LSTM使用示例假设数据输入为input形状是[10,20]假设embedding的形状是[100,30]则LSTM使用示例如下importtorch batch_size10seq_len20embedding_dim30word_vocab100hidden_size18num_layer2# 准备输入数据inputtorch.randint(low0,high100,size(batch_size,seq_len))# 10 * 20# 准备embeddingembeddingtorch.nn.Embedding(word_vocab,embedding_dim)# 100 * 30lstmtorch.nn.LSTM(embedding_dim,hidden_size,num_layer)# 进行embeding操作embedembedding(input)# [10,20,30]# 转化数据为batch_firstFalseembedembed.permute(1,0,2)# [20,10,30]# 初始化状态如果不初始化,torch默认初始值为全0h_0torch.rand(num_layer,batch_size,hidden_size)c_0torch.rand(num_layer,batch_size,hidden_size)output,(h_1,c_1)lstm(embed,(h_0,c_0))print(output.size(),h_1.size(),c_1.size())# output [20,10,1*18]# h_1 [2,10,18]# c_1 [2,10,18]3 GRU的APIGRU模块torch.nn.GRU和LSTM的参数相同含义相同具体可参考文档但是输入只剩下gru(input,h_0)输出为output,h_n。即output,h_n gru(input,h_0)其形状为output(seq_len, batch_size, num_directions * hidden_size)h_n(num_layers * num_directions, batch_size, hidden_size)4 双向LSTM如果选择使用双向LSTM则在实例化的过程中需要把LSTM中bidrecitonal设置为True同时h0和c0使用num_layer*2观察效果输出为batch_size10# 句子数量seq_len20# 每个句子长度embedding_dim30# 每个词语使用多长的向量表示word_vocab100# 词典中词语总数hidden_size18# 隐藏层中LSTM的个数num_layer2# 多少个隐藏层# 准备输入数据inputtorch.randint(low0,high100,size(batch_size,seq_len))# 准备embeddingembeddingtorch.nn.Embedding(word_vocab,embedding_dim)lstmtorch.nn.LSTM(embedding_dim,hidden_size,num_layer,bidirectionalTrue)# 进行embeding操作embedembedding(input)# [10,20,30]# 转化数据为batch_firstFalseembedembed.permute(1,0,2)# [20,10,30]# 初始化状态如果不初始化,torch默认初始值为全0h_0torch.rand(num_layer*2,batch_size,hidden_size)c_0torch.rand(num_layer*2,batch_size,hidden_size)output,(h_1,c_1)lstm(embed,(h_0,c_0))# output [20,10,2*18]# h_1 [2*2,10,18]# c_1 [2*2,10,18]在单向LSTM中output最后一个time step的输出和最后一层隐藏状态h_n的输出相同那么双向LSTM呢双向LSTM中output按照正反计算结果的顺序在最后一个维度进行拼接正向第一个time step输出拼接反向的最后一个time step输出hidden state按照得到的结果在第0个维度进行拼接正向第一层之后接着是反向第一层正向第二层之后接着是反向第二层。。。前向LSTM中output最后一个time step的输出和最后一层 前向传播 隐藏状态h_n的输出相同后向LSTM中output最后一个time step的输出和最后一层 后向传播 隐藏状态h_n的输出相同5 LSTM和GRU的使用注意点第一次调用之前需要初始化隐藏状态往往会使用LSTM或GRU的输出的最后一维最后一个time step的结果来代表LSTM、GRU对文本处理的结果。其形状为[seq_len, batch_size, num_directions * hidden_size]。并不是所有模型都会使用最后一维的结果如果batch_firstFalse则output[-1] or output[-1,:,:]可以获取最后一维如果batch_firstTrue则output[:,-1,:]可以获取最后一维如果结果是(seq_len, batch_size, num_directions * hidden_size)需要把它转化为(batch_size, seq_len, num_directions * hidden_size)的形状不能够使用view等变形的方法需要使用output.permute(1,0,2)即交换0和1轴实现上述效果。使用双向LSTM的时候往往会分别使用每个方向最后一层的h_n作为当前数据经过双向LSTM的结果即torch.cat([h_n[-2,:,:],h_n[-1,:,:]],dim-1)最后的结果的size是[batch_size, hidden_size* 2]上述内容在GRU中同理。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号