按照this论文中所述并在this github存储库中实现的用于时间序列预测的双重关注LSTM模型,我已经用nasdaq100_padding时间序列数据对该模型进行了训练81个原始实际输入和81个虚假时间序列只是生成的随机数,应该用作纯噪声。经过100个时间段后,该模型非常适合测试数据,如下图所示 由于模型非常适合测试数据,因此我希望模型已学会忽略噪声(随机生成的81个时间序列)。 我尝试使用以下代码来可视化输入注意层的激活:
def get_activations(self, st, en, lyr_name='enc_lstm_input'):
test_x, test_y, test_label = self.fetch_data(start=st, ende=en, shuffle=False)
s0_test = h0_test = np.zeros((test_x.shape[0], self.nn_config['m']))
bs = test_x.shape[0] # self.data_config['batch_size']
intermediate_model = KModel(
inputs=self.k_model.inputs,
outputs=self.k_model.get_layer(name=lyr_name).output)
elif self.method == 'dual_attention':
h_de0_test = s_de0_test = np.zeros((test_x.shape[0], self.nn_config['p']))
activations = intermediate_model.predict([test_x, test_y, s0_test, h0_test, s_de0_test, h_de0_test],
batch_size=bs,
verbose=1)
return activations, test_x
我在所有时间步长和所有输入中获得的第一个样本的激活看起来像下图
第一个81输入是实数,第二个81输入只是随机噪声。我希望模型从噪声中学习得很少甚至没有,但是似乎该模型还在从噪声输入中学习很多。从实际输入(前81个输入)中学习的模式与噪声(后81个输入)中的学习模式有很大不同,但我还没有理解此学习中的任何模式。关于如何解释这些激活的任何建议?