1

I have a convolutional neural network which takes a 40x40 real valued input, and maps it to a real valued 40x40 output. I've optimized the number of convolution layers, filter size, hidden layer size, activations and optimiser. My current setup produces a relatively low mean-squared error in the validation data and any more tuning will likely lead to overfitting.

However, my output layer has 1600 indepedent units (one of each point in the 40x40 image), which inevitably leads to quite noisy predictions. The true 40x40 targets are nowhere near as noisy and contain a lot of spatial correlation/local structure. I want to be able to capture this spatial structure. What are my options?

I've been looking around at some options and one easy way of incorporating dependencies between outputs would be to simply fit a 2D gaussian process to the 40x40 prediction.

I could simply increase the amount of training data in the hope that the noise reduces.

Conditional random fields (CRFs) seem like a good way forward, but I'm struggling to find examples of CRFs in a regression setting in 2D. I'm aware of PyStruct but I don't think it does what I want.

Are there any other options available to me? Are there any "traditional" methods for dealing with structured/correlated outputs?

Tom Bolton
  • 11
  • 1
  • Graphical models are a traditional way to impose this sort of structure (see for instance [Geman and Geman, 1984][1]). More data is of course always better if it's possible. Are you using a fully convolutional CNN? [1]: http://www.stat.cmu.edu/~acthomas/724/Geman.pdf – MachineEpsilon Nov 08 '17 at 01:30

0 Answers0