I'm very new to NN and have started playing around with Deeplearning4j. I have tried as an exercise the idea of reducing ISO noise from a photo. To do this I took 2 photos identically framed, but one shot at ISO 100 and one shot at ISO25600.
I made a simple NN with 2 hidden layers. The input is the noisy, high ISO image (3 channels * 100px * 100px = 30000) and the output should be the clean image (same size as the input)
Here's how my NN looks like:
final int numHiddenNodes = 50;
return new NeuralNetConfiguration.Builder()
.seed(seed)
.iterations(iterations)
.optimizationAlgo(
OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.learningRate(learningRate)
.weightInit(WeightInit.XAVIER)
.updater(Updater.NESTEROVS)
.optimizationAlgo(
OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.list()
.layer(0,
new DenseLayer.Builder().nIn(numInputs)
.nOut(numHiddenNodes)
.activation(Activation.TANH).build())
.layer(1,
new DenseLayer.Builder().nIn(numHiddenNodes)
.nOut(numHiddenNodes)
.activation(Activation.TANH).build())
.layer(2,
new OutputLayer.Builder(LossFunctions.LossFunction.MSE)
.activation(Activation.RELU)
.nIn(numHiddenNodes).nOut(numOutputs).build())
.pretrain(false).backprop(true).build();
I've trained my network for several thousands epochs, and the score I get is around 130 (that's probably the Mean Squared Error), but the result I'm getting is not what I expected.
Am I going about this the wrong way?