当前位置: 首页 > 知识库问答 >
问题:

RNN/LSTM/GRU的最后一个时间步长的状态与所有时间步长的状态

袁智明
2023-03-14

根据我到目前为止的理解,在为序列分类任务训练RNN/LSTM模型后,我可以通过以下两种方式进行预测,

  1. 获取最后一个状态并使用softmax层进行预测

总的来说,有什么理由选择一个而不是另一个?或者这取决于应用程序?此外,如果我决定使用第二种策略,我应该为每个时间步使用不同的softmax层,还是为所有时间步使用一个softmax层?

共有1个答案

韦澄邈
2023-03-14

我从未见过任何网络实现第二种方法。最明显的原因是,除最后一个状态外,所有状态都没有看到整个序列。

例如,回顾情绪分类。它可以从一些积极的方面开始,然后是一个“但是”和一系列缺点。“但是”之前的所有RNN单元都会有偏差,它们的状态不会反映真正的标签。他们中有多少人表现积极,他们有多自信,这重要吗?不管怎样,最后一个单元格输出将是一个更好的预测值,因此我不认为有理由将之前的单元格输出考虑在内。

如果数据方面的顺序在特定问题中不重要,那么RNN通常看起来不是一个好方法。否则,最好使用最后一个状态。

然而,在具有注意力机制的序列到序列模型中有一个例外(例如,请参见此问题)。但是它是不同的,因为解码器在每一步上预测一个新的令牌,所以它可以从查看早期状态中受益。此外,它还需要最终隐藏的状态信息。

 类似资料:
  • 我正在Android Studio中构建一个Android应用程序。每次我用Gradle文件同步项目时,成功同步需要几分钟。在我的Android Studio的底部,我看到以下几分钟行: 当我单击其中一个错误时,我看到: 组织。格拉德尔。内部的资源运输http。HttpErrorStatusCodeException:无法发送头'https://jcenter.bintray.com/com/go

  • 问题内容: 给定训练有素的LSTM模型,我想对单个时间步执行推断,即在下面的示例中。在每个时间步之后,需要记住下一个“批”的内部LSTM状态(内存和隐藏状态)。对于推论的最开始,在给定输入的情况下计算内部LSTM状态。然后将它们存储在传递给LSTM的对象中。在训练期间,此状态会在每个时间步更新。但是,为了进行推断,我希望在批处理之间保存初始状态,即,仅需在最开始时计算初始状态,然后在每次“批处理”

  • 我试图运行一个标准的基于SIR代理的模型,在该模型中代理从“易受感染”过渡到“已感染”,从“已感染”过渡到“已恢复”。我现在感兴趣的是计算瞬时发病率,即在给定时间t从“易感”状态转变为“感染”状态的代理人的数量。 例如:在第1天(模型时间),2个Agent在第2天(模型时间)从“易感”转变为“已感染”,5个Agent在第3天(模型时间)从“易感”转变为“已感染”,7个Agent从“易感”转变为“已

  • 问题内容: 在我们的Web应用程序中,用户可以进行需要大量数据库表进行更新的更改。所有内容的加载时间最长为30秒。我不希望用户在导航到另一个页面之前等待其完成。 我将长时间运行的代码放在自己的页面上(例如,“ updateinfo.aspx”),并尝试了一些解决方案,包括jQuery AJAX调用“ updateinfo.aspx”或加载调用“ updateinfo.aspx”的图像文件。在所有情

  • 问题内容: 我试图了解React的有状态和无状态组件之间的确切区别。好的,无状态组件只会做某事,但是什么也不会记住,而有状态组件可能会做同样的事情,但是它们会记住其中的内容。那是理论。 但是现在,在检查如何使用代码显示此内容时,我有点麻烦了。以下两个示例对吗?唯一的区别确实是函数的定义。 无状态组件的示例: 有状态组件的示例: 问题答案: 是的,那是有区别的。除了有 状态 组件,您还可以使用以下方

  • 我有一个很长的时间戳1499070300(相当于星期一,03 Jul 2017 16:25:00 0800),但当我将其转换为LocalDateTime时,我得到1970-01-18T16:24:30.300 这是我的代码