如何识别LSTM中的重要功能

时间:2019-11-06 02:34:15

标签: python keras deep-learning data-visualization lstm

我有一个二进制分类问题,对于每个数据点,我有以下3个时间序列。

data_point,   time_series1,      time_series2,      time_series3,  label
d1,         [0.1, ....., 0.5], [0.8, ....., 0.6], [0.8, ....., 0.8], 1
and so on

我正在使用以下代码执行我的二进制分类。

model = Sequential()
model.add(LSTM(100, input_shape=(25,4)))
model.add(Dense(50))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

因为,目前我正在考虑将其归类为黑匣子任务,所以我想更深入地研究一下内部发生的事情。

更具体地说,我想知道LSTM用于对我的数据点进行分类的重要功能。更重要的是,我想回答以下问题;

  • 哪个时间序列(即time_series1time_series2time_series3)在分类中的影响最大
  • 从受影响最大的时间序列中提取的特征是什么?

很高兴在需要时提供更多详细信息。

1 个答案:

答案 0 :(得分:1)

注意机制用于此目的;程序化实现并不简单,但是存在可使用的存储库-参见下文。下面的示例输出。

关于“注意”是什么,请参见this SE answer和/或this Quora answer;简而言之,这是一种识别最重要的时间步长的方法,可以有效地绘制出时间上的“热图”。

最后,作为一个提示,放弃IndRNNs的LSTM;前者在800-1000步之间挣扎,后者在5000+时表现出成功。功能也更易于解释,因为每个通道都是独立的LSTM型门控机制。尽管如果速度很重要,则没有CuDNNIndRNN