【发布时间】:2015-09-06 17:19:17
【问题描述】:
我正在做一个项目,我需要降低我的观察的维度,并且仍然对它们有一个有意义的表示。出于多种原因,强烈建议使用自动编码器,但我不太确定这是最好的方法。
我有 1400 个尺寸约为 60,000 的样本,这太高了,我正在尝试将它们的维度降低到原始维度的 10%。我正在使用 theano 自动编码器 [Link],似乎成本一直在 30,000 左右(非常高)。我尝试增加 epoch 数或降低学习率,但均未成功。我不是自动编码器方面的大专家,所以我不确定如何从这里开始或何时停止尝试。
我还可以运行其他测试,但在继续之前,我想听听您的意见。
您是否认为数据集太小(我可以再添加 600 个样本,总共约 2000 个)?
您认为使用堆叠式自动编码器会有所帮助吗?
我应该继续调整参数(时期和学习率)吗?
由于数据集是一组图片,因此我试图可视化来自自动编码器的重建结果,而我得到的只是每个样本的相同输出。这意味着在给定输入的情况下,自动编码器会尝试重建输入,但我得到的是任何输入的相同(几乎完全)图像(看起来像是数据集中所有图像的平均值)。这意味着内部表示不够好,因为自动编码器无法从中重建图像。
数据集: 1400 - 2000 张扫描书籍(包括封面)的图像,每张约 60.000 像素(转换为 60.000 个元素的特征向量)。每个特征向量都在 [0,1] 中进行了归一化,最初的值在 [0,255] 中。
问题:使用自动编码器降低它们的维度(如果可能)
如果您需要任何额外信息,或者我遗漏了一些可能有助于更好地理解问题的内容,请添加评论,我很乐意帮助您 =)。
注意:我目前正在对整个数据集进行更多时期的测试,我将根据结果更新我的帖子,不过可能需要一段时间。
【问题讨论】:
-
您是否考虑过其他降维技术,例如主成分分析?
-
我绝对在考虑这一点,但我仍然想了解为什么自动编码器不起作用。
-
所以我在这里有一句话说“Daniel 所说的”,因为你应该先尝试简单的事情,PCA 无论如何都会像单层自动编码器一样为你做很多事情(你不会能够训练的远不止这些)。另一个建议是使用预训练的卷积网络,例如您可以在 sklearn-theano 中找到的,选择一个最新的层并在空间上折叠通道,为每本书封面提供大小为
(n_channels,)的签名。这将捕获一些视觉信息。
标签: python theano dimensionality-reduction autoencoder