首页 > 解决方案 > 计算 LSTM 模型的雅可比矩阵 - Python

问题描述

我有一个训练有素的 LSTM 模型,它有 1 个 LSTM 层和 3 个 Dense 层。我将它用于 One 预测的序列。我有 4 个输入变量和 1 个输出变量。我正在使用最后 20 个时间步的值来预测输出变量的下一个值。该模型的架构如下图所示

model = Sequential()
model.add(LSTM(units = 120, activation ='relu', return_sequences = False,input_shape = 
(train_in.shape[1],5)))
    
model.add(Dense(100,activation='relu'))
model.add(Dense(50,activation='relu'))
model.add(Dense(1))

训练输入和训练输出的形状如下图

train_in.shape , train_out.shape
((89264, 20, 5), (89264,))

我想计算这个模型的雅可比矩阵。说,Y = f(x1,x2,x3,x4) 是上述神经网络的表示 其中: Y -- 训练模型的输出变量, f -- 是表示模型的函数;x1,x2,x3,x4 --输入参数。

如何计算雅可比矩阵?请分享您对此的看法。如果您知道的话,还有任何有价值的参考资料。

谢谢 :)

标签: pythontensorflowmatrixmodellstm

解决方案


你可能想看看tf.GradientTape张量流。梯度磁带是自动区分计算的非常简单的方法。该链接有一些基本示例。

但是你的模型已经很大了。如果你有n参数,你的雅可比就会有n*n值。我相信您的模型可能已经有超过 10000 个参数。你可能需要把它变小。


推荐阅读