I'm trying to train a basic autoencoder in MATLAB. My data is 430 ten-dimensional points, and my autoencoder code like
n_features = 25;
autoenc = trainAutoencoder(data, n_features, ...
'SparsityRegularization', 1, ...
'SparsityProportion', 0.1, ...
'L2WeightRegularization', 0.001, ...
'MaxEpochs', 1000, ...
'DecoderTransferFunction','purelin');
I'm using a linear decoder, as you can see. When I run this on my dataset autoenc
ends up just learning a constant function. All the input weights end up being different but running predict(autoenc, data)
gives the same vector for each data point. What could be going on?
Edit: I looked around some more and it seems like a common phenomenon that autoencoders sometimes learn simply the average value of the data and call it a day. Apparently it is an optimization error, and this is a local minimum. Relevant link; somewhat relevant link. Neither provide satisfactory answers. MATLAB's autoencoder only provides conjugate gradient, as far as I can tell.
encode(autoenc, data)
also give the same vector for each data point? – user1877862 Feb 2 at 19:15