将 PCA 输出与相应的坐标匹配

问题描述

我有这个数据集,其中包含大约 800 张带有相应坐标和不断变化的背景的汽车绕圈行驶的图像。目标是 训练神经网络根据图像预测位置。我重新塑造了图像,以便 原来的 160x320 像素降低到 1x51200,这样我就可以更轻松地输入 NN。然而,因为 这是一个相当大的维度,我应用了 PCA 来减少维度,PCA 确实运行良好,所以 我只能取具有最高特征值的 100 个特征向量,并且仍然具有总方差的 90-95%。

但现在我的障碍来了:我有这 100 张图像,仍然可以重建和可视化,但我不完全知道它们对应于哪个坐标。我不能只取前 100 个坐标,因为这些特征值显然是从图像的不同时间步长中获取的。我需要这些信息,以便我的 NN 能够在学习时匹配它们,并在测试时检查其进度。我读过一个类似的问题,其中的答案指出不可能从 PCA 输出提取索引,但我很确定肯定还有其他人已经面临类似的障碍?

解决方法

您必须能够使用 PCA 做什么才能从紧凑到原始表示。

# dataset.shape = (800,51200)
M = pca(dataset); # M.shape = (100,51200)

original = dataset[k,:] # one vector corresponding to one image in your dataset
compressed_dataset = dataset @ M.T; # compressed_dataset.shape = (800,100)

# if you have a compressed representation of an image you restore it with
restored = compressed_dataset[k,:] @ M # .shape = (1,512000)

# here you expect all_close(restored,original)

请注意,索引是从数据向量中分离出来的。