我正在自己的数据集上训练卷积自动编码器。经过培训,网络能够很好地重建数据集中的测试图像。
我现在从编码器网络获取中间表示( 1648 -dim)并尝试使用 GMM软群集将特征向量聚类为17个(已知的前期)不同类/ strong>即可。但是,群集非常糟糕,无法将图像聚类到各自的类别中。
我正在使用 sklearn.mixture.GaussianMixture 程序包进行聚类,正则化为0.01且“完全”#39; covariance_type。
我的问题:为什么你认为重建非常不错但是聚类非常糟糕?这是否意味着网络学到的中间特征是不够的?
答案 0 :(得分:0)
让我们回答这个问题 - 为什么你认为它应该有任何意义?您正在使用群集,这只是任意分组的方法,但您希望它会发现类。它为什么会这样做?实际上没有任何强迫模型可以这样做,它可能是完全不同的东西建模(如图像,纹理等的补丁)。一般来说,你应该从不期望聚类来解决某些任意标记的问题,这不是集群的用途。为了给你更多的视角 - 你有图像,来自10个类别(如猫,狗等),你问:
请注意同样有效的问题是:
每个数据集都有指数级的标签,训练中的无使用任何标签(自动编码是无监督的,聚类是无人监管的),所以期望结果会神奇地猜测到哪一个你想到的许多笔记本只是一个疯狂的猜测,而事实并非如此。这既不好也不坏。 (在这一点上也让我们忽略GMM与~1700维空间有多好。)
如果你想让一个模型执行某项任务,你必须给它一个机会,训练它来解决它。如果您想查看所学习的功能是否足以恢复类别,请在其上学习分类器。