我有一个二进制分类问题,对于每个数据点,我有以下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_series1
,time_series2
,
time_series3
)在分类中的影响最大很高兴在需要时提供更多详细信息。
答案 0 :(得分:1)
注意机制用于此目的;程序化实现并不简单,但是存在可使用的存储库-参见下文。下面的示例输出。
关于“注意”是什么,请参见this SE answer和/或this Quora answer;简而言之,这是一种识别最重要的时间步长的方法,可以有效地绘制出时间上的“热图”。
最后,作为一个提示,放弃IndRNNs的LSTM;前者在800-1000步之间挣扎,后者在5000+时表现出成功。功能也更易于解释,因为每个通道都是独立的LSTM型门控机制。尽管如果速度很重要,则没有CuDNNIndRNN
。