Deep learning 在分段输入上实现RNN/LSTM
我正在设计一个深度学习模型,用于对长度为m2的输入进行分类,并考虑以下多层LSTM模型: 图像(没有足够的代表发布图像): 请注意,LSTM分别为m2对m2和m2对1。但是,m2较大,使得LSTM容易发生梯度消失/爆炸。我考虑将输入拆分为大小为m的段,允许LSTM为m-to-one而不是m2-to-one: 图片:Deep learning 在分段输入上实现RNN/LSTM,deep-learning,lstm,rnn,Deep Learning,Lstm,Rnn,我正在设计一个深度学习模型,用于对长度为m2的输入进行分类,并考虑以下多层LSTM模型: 图像(没有足够的代表发布图像): 请注意,LSTM分别为m2对m2和m2对1。但是,m2较大,使得LSTM容易发生梯度消失/爆炸。我考虑将输入拆分为大小为m的段,允许LSTM为m-to-one而不是m2-to-one: 图片: 如何在Tensorflow或Keras中实现这一点?我找不到任何关于LSTM接受每个输入样本多个段的文档 有没有比我提出的更好的模型来处理可分段的长序列输入 您如何在Tensor
- 如何在Tensorflow或Keras中实现这一点?我找不到任何关于LSTM接受每个输入样本多个段的文档
- 有没有比我提出的更好的模型来处理可分段的长序列输入
- 您如何在Tensorflow或Keras中实现这一点?
通过反复的变形。让我们假设您的数据组织为
。因此,您可以按照您建议的[B,m^2]
进行重塑。然后你假装你的批不是由[B,m,m]
样本组成,而是由B
段组成,通过重塑为B*m
,使[B*m,m,1]
显式化,因为我见过的大多数RNN实现(包括TF/Keras)都需要每个时间步的显式特性。通过LSTM运行该命令,得到1
,其中[B*m,k]
是LSTM的宽度。现在,您将形状改回k
,您可以通过另一个LSTM运行此操作,接收[B,m,k]
,其中[B,j]
是第二个LSTM的宽度。然后您可以j
和densed()
来获得二进制分类,或者执行任何任务sigmoid
- 对于处理可分段的长序列输入,是否有比我提出的模型更好的模型?只有你知道你的数据,只有你才能决定。但在我看来,你的建议(1)已经很重要了。最好从琐碎的基线开始,了解您可以期望什么。(2)您的提案以
的倍数引入数据中断。只有您知道数据,但这会人为地限制第一个LSTM可能从数据中挖掘的模式数量m
- LSTM.当然会受到渐变消失的影响,但可以通过渐变剪裁来缓解爆炸。它非常简单,可以在线应用
- bi LSTM。为了获得更好的表示,特别是序列的初始部分,您牺牲了在线处理。这将有助于您的模型变得更加准确,并有助于您更好地了解任务的重要性
- 1-d卷积。一旦你有了平均池,你就可以在技术上用任何本地架构(如1-d CNN)取代LSTM。这可能没有帮助,这取决于您的数据和其中有用信息的范围。不管怎么说,CNN通常更容易训练a,因为它有很好的并行化特性,所以在训练和测试阶段都有很大的加速
- 您如何在Tensorflow或Keras中实现这一点?
通过反复的变形。让我们假设您的数据组织为
。因此,您可以按照您建议的[B,m^2]
进行重塑。然后你假装你的批不是由[B,m,m]
样本组成,而是由B
段组成,通过重塑为B*m
,使[B*m,m,1]
显式化,因为我见过的大多数RNN实现(包括TF/Keras)都需要每个时间步的显式特性。通过LSTM运行该命令,得到1
,其中[B*m,k]
是LSTM的宽度。现在,您将形状改回k
,您可以通过另一个LSTM运行此操作,接收[B,m,k]
,其中[B,j]
是第二个LSTM的宽度。然后您可以j
和densed()
来获得二进制分类,或者执行任何任务sigmoid
- 对于处理可分段的长序列输入,是否有比我提出的模型更好的模型?只有你知道你的数据,只有你才能决定。但在我看来,你的建议(1)已经很重要了。最好从琐碎的基线开始,了解您可以期望什么。(2)您的提案以
的倍数引入数据中断。只有您知道数据,但这会人为地限制第一个LSTM可能从数据中挖掘的模式数量m
- LSTM.当然会受到渐变消失的影响,但可以通过渐变剪裁来缓解爆炸。它非常简单,可以在线应用
- bi LSTM。为了获得更好的表示,特别是序列的初始部分,您牺牲了在线处理。这将有助于您的模型变得更加准确,并有助于您更好地了解任务的重要性