我有一个由大约800张汽车在圆圈中行驶的图像组成的数据集,这些图像具有相应的坐标和变化的背景。目标是训练一个神经网络来根据图像预测位置。我调整了图像的形状,使原始的160x320像素降到1x51200,这样我就可以更容易地输入我的NN。然而,由于这是一个相当大的维度,我应用了PCA来降低维度,并且PCA确实工作得很好,因此我只能采用具有最高特征值的100个特征向量,并且仍然具有总方差的90-95%。
但现在我的障碍来了:我有这100幅图像,仍然可以重建和可视化,但我不确切地知道它们对应于哪个坐标。我不能只取前100个坐标,因为这些特征值显然是从不同的时间步长,通过图像的级数。我需要这些信息,以便我的神经网络能够在学习的同时匹配它们,并在测试时检查其进度。我读到了一个类似的问题,答案是不可能从PCA输出中提取指数,但我很确定肯定有其他人已经面临类似的障碍?
发布于 2021-02-10 21:41:03
您必须能够使用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)
请注意,索引是与数据向量分开存储的。
https://stackoverflow.com/questions/66133517
复制相似问题