如何解决如何在一个可视化图中绘制两组高维数据以进行比较?
我正在尝试比较我从GAN(Generated Adversarial Network)生成的样本(即MNIST数字图像)。 对于我的第一个实验,GAN训练没有成功,因此生成的样本与真实的MNIST图像并不相似。 对于我的第二个实验,GAN训练非常成功,因此生成的样本应与可视化图中的真实MNIST样本很好地重叠。
上面的示例图显示了我希望实现的目标: (1)第一张图显示了原始的真实图像分布 (2)第二张图显示GAN1的结果与真实数据没有很好的重叠 (3)第三张图表明GAN2的结果与真实数据有很好的重叠。
有人可以提供一些指导吗?用Python绘制类似内容并提供示例代码的好方法是什么?
解决方法
您可以尝试使用PCA,t-SNE,LLE或UMAP之类的降维方法将图像的尺寸缩小为2并在绘制图像时已经指出了。
这是python中的一些示例代码:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
X_real = ... # real images e.g. 1000 images as vectors
X_gan = ... # generated images from GAN with same shape
X = np.vstack([X_real,X_gan]) # stack matrices vertically
X_pca = PCA(n_components=50).fit_transform(X) # for high-dimensional data it's advisible to reduce the dimension first (e.g. 50) before using t-SNE
X_embedded = TSNE(n_components=2).fit_transform(X_pca)
# plot points with corresponding class and method labels
plt.scatter(...)
您可以直接使用PCA或上述其他方法之一来代替t-SNE。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。