The problem is the following: Given a single 3-channel image (e.g. 200x150), I constructed a dataset where the features are the pairs of (x,y) coordinates and the targets are the (R,G,B) values. Each {(x,y) , (r,g,b)} is a training example. The aim is to overfit the training set (another way to see this is to be able to reconstruct the image pixel by pixel).
I would like to achieve an almost perfect reconstruction, but even with
- a neural network with
4 hidden layers
- ReLU activation function in each layer, except the output layer
1.000.000 parameters
- normalizing features and targets between [0,1]
- training
300 epochs
withrmsprop
- weights from a normal with mean 0 and std 0.05 and the biases at 0.
I can only achieve 0.005 mean squared error
(normalized).
How can I improve this performance? Do I need better preprocessing, network architecture, ecc, ...?
summary: The network is pretty useless, bu you can interpret the question this way:
How can I overfit a dataset with 200x150=30k
training examples, each with 2 features (x,y) and 3 targets (r,g,b), With range(x) = [0,Width)
, range(y) = [0, Height)
and range r,g,b = [0,255]
, using a fully-connected neural network?