I want to implement a CNTK Network that is able to learn a linear motion model. Similar to a Kalman Filter task the Network will receive measurement data from an accelerometer and should output a change in the current position.
dx = v_0 * dt + 1/2 * a * dt²
_____ __________
input: a -> | | -> dx a -> | | -> dx :output
v -> | NN | -> dv | v dv | -> dv
^ |_____| | | ^ | |
| | | |_LSTM_| |
|__ cumsum(dv)___| |__________|
Desired Aproach
Training Data for dv and dx is available.
Since the network should learn model free I do not want to input any motion model. My problem is that without memorizing the velocity from the previous time step the acceleration value is not directly linked to the position change.
Or do I have to do something like this:
_____ _____
input: a -> | | -> dv -> cumsum(dv) -> v -> | | -> dx
| NN | | NN |
|_____| |_____|
Unfortunately Tutorials and Examples do not contain a similar task. I think it has to work with a RNN, Elman or Jordan Network. But I am not able to implement that in python in CNTK. Has anyone done something similar before? I'm still a bit confused with dynamic and static axis and forward declaration.
Another formulation for my question would be: How to teach a network to integrate or sum.
Thanks for every comment or hint.