Neural networks training and 'removeconstantrows' process function

Hi,
I have a neural network with 4480 inputs and 333 outputs. If I use standard newff call, like this: nn = newff(inputs, outputs); netowrk trains quite well, but I get only 146 weights/biases for output layer. And no matter how big network I declare - nn = newff(inputs, outputs, [L1size L2size ...] - with 'removeconstantrows' I always get 146 output neurons. Removing 'removeconstantrows' from nn.outputs{i}.processFcn results in 333 weights in output layer, but the network has huge MSE (~2e-2). I understand that it means that my learning set is not representing enough different inputs and that's why Matlab reduces size of output layer to active neurons only. Unfortunately it's the only set I've got and I cannot change that. What I do not understand is the mapping of those 146 weights/biases to my 333 output values.
How do I know which neurons left? How do I calculate 333 outputs with only 146 neurons?

Antworten (1)

Greg Heath
Greg Heath am 14 Okt. 2011

0 Stimmen

I assume your original input and target matrices have sizes
[ 4480 N] = size(p) [ 330 N ] = size(t)
Constant rows are those for which var(p')' and var(t')' have zero values.
Therefore you can write a few lines of code to identify them and remove them.
Hope this helps.
Greg
P.S. The input dimension should probably be reduced by additional dimensionreduction techniques.

Kategorien

Mehr zu Deep Learning Toolbox finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 31 Mär. 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by