I am currently trying to solve a regression problem using neural networks. I want to detect movement patterns in images over time (video) and output a continuous value for different medical indices. After training a network I used the training data to predict outputs to make sure the network learned the patterns correctly, but I noticed something strange.
The model is able to track the course of the expected reference values, but cannot seem to predict the correct absolute values (see image below). It seems like the predictions are shifted a certain value below the reference values. What can I do to make my network predict the correct y-axis values? (Adding a bias would probably do the trick, but it is definitely not the best solution.)
The network topology:
- TimeDistributed(Conv2D(32, (3,3)))
- TimeDistributed(Conv2D(16, (3,3)))
- TimeDistributed(Flatten())
- GRU(64, stateful=True)
- Dropout(0.5)
- Dense(64, activation='relu')
- Dense(1)
The image below displays two curves: one for the expected reference values (orange) and one for the predictions made by the network (blue). The plots represent the continuous predictions for every training data sample.
Any hint would help me out a lot, thank you!