我使用带有Tensorflow后端的Keras进行时间序列预测(主要是3-6个输入,1个输出) . 它们在预测任务中表现良好,但我想从训练有素的网络中提取知识 .

1. Calculation of optimal input sets 我想使用网络为给定的所需输出提供最佳输入集 . 有没有可能这样做?我只知道有关最大或最小输出的推导的方法 .

2. Extraction of ALL weights 使用Keras我能够提取RNN的权重,例如喜欢:

Param tf.Variable 'simple_rnn_1/kernel:0' shape=(5, 1) dtype=float32_ref:  [[ 0.32823798]

 [ 0.35204217]

 [-0.2824467 ]

 [ 0.09021389]

 [ 0.54498464]]

Param tf.Variable 'simple_rnn_1/recurrent_kernel:0' shape=(1, 1) dtype=float32_ref:
[[-1.]]

Param tf.Variable 'simple_rnn_1/bias:0' shape=(1,) dtype=float32_ref:
[0.01360767]

这是具有滑动窗口大小5的RNN网络的示例 . 将RNN视为y(t)=为什么h(t)的权重(内核,偏差)是有用的,但是如何获得隐藏的权重矩阵输出h(t)= H(为什么x(t)Whh h(t-1)bh)?最后,我想重写一个RNN作为动态反馈控制系统,如xt 1 =AxtBφ(xt,ut),但因此我需要隐藏的权重矩阵 .

或者您可能还有其他选择来重写像这样的KERAS模型?我想将动态系统理论中的lyapunov稳定性应用于RNN .

我对任何建议感到高兴!