热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

如何处理极长的LSTM序列长度?

如何解决《如何处理极长的LSTM序列长度?》经验,为你挑选了1个好方法。

我有一些数据以非常高的速率采样(每秒数百次)。对于任何给定的实例,这平均会导致序列长度很大(〜90,000个样本)。整个序列只有一个标签。我正在尝试使用LSTM神经网络将新序列分类为这些标签之一(多类分类)。

但是,使用具有如此大序列长度的LSTM会导致网络很大。

有什么方法可以有效地“整理”这些序列,以使我可以减少神经网络的序列长度,但仍保持整个实例中捕获的信息?



1> Shamane Siri..:

当序列很长时,RNN可能会遇到梯度消失和梯度爆炸的问题。

有方法。您需要了解的第一件事是为什么我们需要尝试上述方法?这是因为由于上述问题,长时间反向传播会变得非常困难。

是的,LSTM的引入已在很大程度上减少了这种情况,但是仍然很长,您仍然会遇到此类问题。

因此,一种方法是剪切渐变。这意味着您设置渐变的上限。请参阅此stackoverflow问题

那你问这个问题

有哪些方法可以有效地“整理”这些序列?

一种方法是截断时间的反向传播。有很多方法可以实现此截断的BPTT。简单的想法是

    仅计算给定时间步长的梯度这意味着,如果您的序列是200个时间步长,而您只给出10个时间步长,则它将仅计算10个时间步长的梯度,然后将在该10个时间步长中存储的存储值传递给下一个序列(作为初始单元状态)。张量流使用此方法来计算截断的BPTT。

2.采取完整的序列,并且仅从选定的时间块开始反向传播特定时间步长的梯度。这是一种连续的方式

这是我发现的最好的文章,它解释了这些截断的BPTT方法。很容易。请参阅这种截断的反向传播样式


推荐阅读
author-avatar
开心小笨笨猪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有