gpt4 book ai didi

machine-learning - 用于机器学习的 Python 中的 ZCA 白化

转载 作者:行者123 更新时间:2023-11-30 09:51:07 30 4
gpt4 key购买 nike

我正在训练 1000 张 28x28 大小的图像。但在训练之前,我引用How to implement ZCA Whitening? Python对我的数据进行ZCA白化。 .

由于我有1000张尺寸为28x28的数据图像,拼合后,它变成了1000x784。但正如下面的代码所示,X是否是我的1000x784的图像数据集?

如果是这样,则表示 ZCAMatrix 大小为 1000x1000。在本例中,为了进行预测,我有一个大小为 28x28 的图像,或者我们可以说,大小为 1x784。因此,将 ZCAMatrix 与图像相乘是没有意义的。

所以我认为,X是图像数据集的转置。我对吗?如果我是对的,那么 ZCAMatrix 的大小是 784x784。

现在我应该如何计算ZCA白化图像,是否应该使用np.dot(ZCAMatrix, transpose_of_image_to_be_predict)np.dot(image_to_be_predict, ZCAMatrix) ?如有建议,我们将不胜感激。

def zca_whitening_matrix(X):
"""
Function to compute ZCA whitening matrix (aka Mahalanobis whitening).
INPUT: X: [M x N] matrix.
Rows: Variables
Columns: Observations
OUTPUT: ZCAMatrix: [M x M] matrix
"""
# Covariance matrix [column-wise variables]: Sigma = (X-mu)' * (X-mu) / N
sigma = np.cov(X, rowvar=True) # [M x M]
# Singular Value Decomposition. X = U * np.diag(S) * V
U,S,V = np.linalg.svd(sigma)
# U: [M x M] eigenvectors of sigma.
# S: [M x 1] eigenvalues of sigma.
# V: [M x M] transpose of U
# Whitening constant: prevents division by zero
epsilon = 1e-5
# ZCA Whitening matrix: U * Lambda * U'
ZCAMatrix = np.dot(U, np.dot(np.diag(1.0/np.sqrt(S + epsilon)), U.T)) # [M x M]
return ZCAMatrix

以及用法示例:

X = np.array([[0, 2, 2], [1, 1, 0], [2, 0, 1], [1, 3, 5], [10, 10, 10] ]) # Input: X [5 x 3] matrix
ZCAMatrix = zca_whitening_matrix(X) # get ZCAMatrix
ZCAMatrix # [5 x 5] matrix
xZCAMatrix = np.dot(ZCAMatrix, X) # project X onto the ZCAMatrix
xZCAMatrix # [5 x 3] matrix

最佳答案

我从可用的 Keras 代码中获得了引用 here .

很明显,在我的例子中,协方差矩阵将给出 784x784 矩阵,在其上执行奇异值分解。它给出了3个矩阵,用于计算principal_components,并且principal_components用于查找ZCA白化数据。

现在我的问题是

how should I calculate the ZCA whitened image, whether I should use np.dot(ZCAMatrix, transpose_of_image_to_be_predict) or np.dot(image_to_be_predict, ZCAMatrix)? Suggestion would be greatly appreciate.

为此,我从 here 获取了引用资料.

这里我需要使用np.dot(image_to_be_predict, ZCAMatrix)来计算ZCA白化图像。

关于machine-learning - 用于机器学习的 Python 中的 ZCA 白化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45015815/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com