首页 > 解决方案 > 如何使用注意力机制对 RNN 建模以进行非文本分类?

问题描述

带有注意机制的循环神经网络(RNN)通常用于机器翻译和自然语言处理。在 Python 中,RNN With Attention Mechanism 的实现在机器翻译中非常丰富(例如https://talbaumel.github.io/blog/attention/,但是我想做的是在时间上使用 RNN With Attention Mechanism数据文件(不是任何基于文本/句子的数据)。

我有一个尺寸为 21392 x 1972 的 CSV 文件,我已使用 Pandas 将其转换为 Dataframe。第一列是日期时间格式,最后一列包含我想识别的目标类,如“Class1”、“Class2”、“Class3”等。因此,总共有 21392 行(以 10 分钟为时间步长的数据实例)和 1971 个特征。最后(第 1972 列)是标签列,共有 14 个不同的类。

我已经查看了有关 Keras ( https://medium.com/datalogue/attention-in-keras-1892773a4f22)以及 Tensorflow (在 Tensorflow中可视化注意力激活)的可用实施文档,但他们似乎都没有做什么我想完成。我知道这是一种不寻常的方法,但我想尝试一下并使用注意力机制,因为我的许多特征在数据中可能是多余的。

import pandas as pd
mydataset = pd.read_csv('final_merged_data.csv')

从现有文献来看,注意力机制在耦合到 RNN 时效果很好。我无法找到任何这样的带有注意力机制的 RNN 实现,它也可以提供可视化。我也无法理解如何将我的数据转换为序列(或列表列表),以便之后我可以将它与 One Hot Encoding 一起使用,以使用带有 Attention 的 RNN。我是使用 Python 以及 Keras/Tensorflow 的新手,并且对将我的数据/类型转换为能够模拟序列分类问题的形式的过程感到非常困惑。我的问题基本上是多类分类,就像通常使用机器学习分类器来预测标签一样,但使用带有注意力的 RNN。在这方面的任何帮助将不胜感激。干杯!

标签: pythonrecurrent-neural-networkattention-model

解决方案


请参阅本文以使用带有注意力的序列到序列模型进行时间序列分类。

https://www.computer.org/csdl/proceedings/icdmw/2016/5910/00/07836709.pdf


推荐阅读