首页 > 其他分享 >循环神经网络 —— LSTM 有状态模型(stateful LSTM)和无状态模型(stateless LSTM)

循环神经网络 —— LSTM 有状态模型(stateful LSTM)和无状态模型(stateless LSTM)

时间:2023-11-28 13:07:34浏览次数:55  
标签:stateless 模型 初始值 stateful batch sample LSTM

 

相关参考:

训练后的LSTM模型在进行预测时的初始h_n和c_n是什么或应该怎么设置?


 

 

Keras中对RNN网络的statefull和stateless设置:

链接:https://keras.io/zh/getting-started/faq/#how-can-i-use-stateful-rnns

 

循环神经网络 —— LSTM 有状态模型(stateful LSTM)和无状态模型(stateless LSTM)_数据

循环神经网络 —— LSTM 有状态模型(stateful LSTM)和无状态模型(stateless LSTM)_赋值_02

 

 

===============================================

 

 

必须要承认,由于平时很少用RNN,所以对于LSTM的stateful和stateless这两者的区别也是头一次听说。

 

 

首先我们要知道LSTM的初始值这个概念,LSTM在初始时框架一般默认对初始值h_0和c_0赋值为0,具体见pytorch官方文档:

https://pytorch.org/docs/stable/generated/torch.nn.LSTM.html#torch.nn.LSTM

 

循环神经网络 —— LSTM 有状态模型(stateful LSTM)和无状态模型(stateless LSTM)_赋值_03

 

 

知道了这个初始值的概念后我们可以知道LSTM在每个batch的训练和预测时都是会使用这个默认值的,也就是说每个batch时h_0和c_0都是被设置为0的,由于在LSTM这样的RNN网络中每个sample都是一个时序类型的数据,因此在一个batch的计算中每个sample在计算不同时间步时上一时间步计算得到的h_t和c_t会作为t+1步时的h_0和c_0的输入值,但是当每个batch计算结束后计算下个batch数据时默认都是将h_0和c_0默认赋值为0的。但是,有时候可能sample过长,我们可以把原本的一个sample切分成前后两个sample,也可能本身sample之间就具备时序关系,这时候在一个epoch中计算上下两个batch时如果将上一个batch计算结束时的h_0和c_0作为下个batch计算时的初始值会提升模型的性能,而这种方式的LSTM则被称为stateful,而默认的那种前后batch都将初始值设置为0的默认方式被称为stateless。

 

框架中使用staleful的LSTM时需要保证上下batch中batch_size是相同的,并且batch内的sample不能shuffle;而且要知道只有少数的情况,如前后batch的数据有时序关联的情况下才适合使用stateful的LSTM,否则适用于默认的stateless的LSTM。

 

 

 

 

===============================================

 

 

 

 

 

标签:stateless,模型,初始值,stateful,batch,sample,LSTM
From: https://blog.51cto.com/u_15642578/8598594

相关文章

  • 大模型技术浪潮的潮汐效应
    最近这段时间深度体验了一波大模型应用,老实说给我带来的震撼,远超预期。以前有很多同学咨询我,如何提高自己的技术能力。我的建议是短期学习那些能快速变现的技术,比如16-18年时候自动化测试很火,你就去学习Python+Selenium那一套,学会了最起码跳槽涨薪没问题。而技术的底层几十年没......
  • OpenSearch向量检索和大模型方案深度解读
    大家好,我叫邢少敏,目前负责阿里云开放搜索OpenSearch的研发,很高兴在此跟大家分享OpenSearch在向量检索和大模型方面做的一些工作。基于向量检索的分布式智能搜索引擎通常,数据大致可以分为结构化数据和非结构化数据两种类型。结构化数据的搜索问题我们一般用数据库来解决,非结构化数据......
  • 基于WSAAsyncSelect模型的通信程序设计
    基于WSAAsyncSelect模型的通信程序设计一、问题描述编写Win32程序模拟实现基于WSAAsyncSelect模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递。客户端向服务器端发送“请输出从1到1000内所有的质数”,服务器回应客户端给出结果。二、代码实现①CInit......
  • 金蝶与千帆大模型开发平台共创智能企业管理
    随着科技的飞速发展和信息化时代的到来,企业管理面临越来越多的挑战。如何将先进的技术与企业管理相结合,提高企业的运营效率和管理水平,成为当前企业发展的重要课题。金蝶作为国内知名的企业管理软件提供商,基于百度智能云千帆大模型平台,打造了新一代企业管理产品,为企业提供了更加智能......
  • 倾斜摄影三维模型的根节点合并的轻量化技术方法分析
    倾斜摄影三维模型的根节点合并的轻量化技术方法分析 倾斜摄影三维模型的根节点合并是一种轻量化技术,旨在减小模型数据的大小,提高渲染效率和加载速度。在本文中,我们将探讨关于倾斜摄影三维模型根节点合并的轻量化技术方法。1、LOD(层次细节)技术:LOD是一种常用的轻量化技术,通过......
  • R语言和Python对copula模型Gaussian、t、Clayton 和 Gumbel 族可视化理论概念和文献计
    原文链接:http://tecdat.cn/?p=27240 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于copula的研究报告,包括一些图形和统计输出。本文包含一些直观的示例来说明copula理论的核心概念。以下是脚本及其各自用途的简短列表:首先演示如何使用高斯copula来模拟具有任意......
  • 调和级数枚举倍数模型
    调和级数枚举倍数模型参考博客:算法学习笔记27:素数筛法【埃氏筛法、线性筛法】OI&ACM]调和级数枚举倍数模型板子(时间复杂度\(O(nlogn)\)):for(inti=1;i<=n;i++){for(intj=i;j<=n;j+=i){??? }}应用:目前较常见的用处:\(f[i]:最大公因数为i的倍......
  • 关于Java内存模型
    (面试被问到,想到之前有个笔记,整理一下发出来。)内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。不同架构的物理机器可以拥有不一样的内存模型,而Java虚拟机也有自己的内存模型。Java内存模型(JavaMemoryModel,JMM)是来屏蔽各种硬件和操作系统......
  • 生产效率的革新:腾讯混元大模型实测!
    自从年初以ChatGPT为代表的人工智能大模型爆火之后,市场上随之出现了很多大模型相关的工具。作为一个IT行业的技术人员,肯定不会放过这种对新技术尝鲜的机会。最近腾讯推出了自己的大模型:混元。目前刚开始内测,为此我特意找认识的腾讯小伙伴帮我开通了内测资格,提前体验了一下腾讯的......
  • 如何在langchain中对大模型的输出进行格式化
    简介我们知道在大语言模型中,不管模型的能力有多强大,他的输入和输出基本上都是文本格式的,文本格式的输入输出虽然对人来说非常的友好,但是如果我们想要进行一些结构化处理的话还是会有一点点的不方便。不用担心,langchain已经为我们想到了这个问题,并且提出了完满的解决方案。lan......