I am using a recurrent neural network for data of the form (x_t, y_t)_{t=1}^T. My RNN has therefore the form
y_t^{nn} = NN(x_{t-1}, x_t, y_{t-1}),
with 1 hidden layer, 20 neurons, a sigmoid activation function and a linear output layer i.e.
model = Chain(RNN(3 => 10, sigmoid), Dense(10 => 1, identity))
After 100 epochs the RNN shows good convergence and I receive good results (see Fig).
Now I am interested in calculating the slope at a specific t for example (x_{5}, y_{5}). My idea was to calculate the Jacobian leading to \frac{\partial NN}{\partial x_{t-1}}, \frac{\partial NN}{\partial x_t} and \frac{\partial NN}{\partial y_{t-1}}. The searched slope should then be equal to \frac{\partial NN}{\partial x_t}.
idx = 5
tangent_nn = Flux.jacobian(model, X[idx]) #= (Float32[0.04896392 -0.046510044 0.9080559])
tangent_exact = (Y[idx] - X[idx][3])/(X[idx][2]-X[idx][1]) #= 7.666664985015
One can see that none of the three entries of the jacobian is equal to the “exact” tangent. Can someone explain me what I am missing?