MATLAB自动编码器学习常数函数

MATLAB自动编码器学习常数函数,matlab,machine-learning,neural-network,autoencoder,Matlab,Machine Learning,Neural Network,Autoencoder,我正在尝试用MATLAB训练一个基本的自动编码器。我的数据是430个十维点,我的自动编码代码是 n_features = 25; autoenc = trainAutoencoder(data, n_features, ... 'SparsityRegularization', 1, ... 'SparsityProportion', 0.1, ... 'L2WeightRegularization', 0.001, ... 'MaxEpochs', 1000,

我正在尝试用MATLAB训练一个基本的自动编码器。我的数据是430个十维点,我的自动编码代码是

n_features = 25;
autoenc = trainAutoencoder(data, n_features, ...
    'SparsityRegularization', 1, ...
    'SparsityProportion', 0.1, ...
    'L2WeightRegularization', 0.001, ...
    'MaxEpochs', 1000, ...
    'DecoderTransferFunction','purelin');
正如你所看到的,我使用的是线性解码器。当我在我的数据集
autoenc
上运行它时,结果只是学习了一个常量函数。所有输入权重最终都不同,但运行
predict(autoenc,data)
会为每个数据点提供相同的向量。会发生什么事


编辑:我又环顾了一下四周,发现自动编码器有时只知道数据的平均值,并称之为一天,这似乎是一种常见的现象。显然这是一个优化错误,这是一个局部极小值。两者都不能提供令人满意的答案。据我所知,MATLAB的自动编码器只提供共轭梯度。

这些设置看起来很典型,所以我想知道训练数据是否有什么奇怪的地方。你能提供一些关于数据的更多信息吗?这是一个(非线性)低维细胞数据嵌入,最初约6500维。十是足够多的维度,以捕获数据中的至少一些结构;我用其他方法验证了这一点。隐藏层的激活看起来如何?i、 e.
encode(autoenc,data)
是否也为每个数据点提供相同的向量?这些设置的可能重复看起来很典型,因此我想知道训练数据是否有一些奇怪的地方。你能提供一些关于数据的更多信息吗?这是一个(非线性)低维细胞数据嵌入,最初约6500维。十是足够多的维度,以捕获数据中的至少一些结构;我用其他方法验证了这一点。隐藏层的激活看起来如何?i、 e.
编码(自动编码,数据)
是否也为每个数据点提供相同的矢量?可能的重复