【问题标题】:Matching PCA output to corresponding coordiantes将 PCA 输出与相应坐标匹配
【发布时间】:2021-02-10 08:44:53
【问题描述】:

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

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

【问题讨论】:

  • 理论上,您已经对代表整个数据集的数据集进行了 PCA,因此尽管新数据不是原始过程的一部分,但您假设可以用您拥有的特征向量完全表示。

标签: matlab math neural-network pca dimensionality-reduction


【解决方案1】:

你必须能够用 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)

请注意,索引是与数据向量分开存储的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 2016-10-29
    • 2020-02-29
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多