首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现ZCA美白?Python

如何实现ZCA美白?Python
EN

Stack Overflow用户
提问于 2015-07-21 09:14:03
回答 5查看 22.4K关注 0票数 11

我正在尝试实现ZCA白化,并找到了一些文章来实现它,但它们有点令人困惑。有人能帮我照一盏灯吗?

任何提示或帮助都是非常感谢的!

以下是我读到的文章:

http://courses.media.mit.edu/2010fall/mas622j/whiten.pdf http://bbabenko.tumblr.com/post/86756017649/learning-low-level-vision-feautres-in-10-lines-of

我尝试了几件事,但大多数我都不明白,我在某个步骤上被锁住了。现在,我将此作为重新开始的基础:

代码语言:javascript
复制
dtype = np.float32
data = np.loadtxt("../inputData/train.csv", dtype=dtype, delimiter=',', skiprows=1)
img = ((data[1,1:]).reshape((28,28)).astype('uint8')*255)
EN

Stack Overflow用户

发布于 2016-07-26 21:07:35

下面是一个用于生成ZCA白化矩阵的python函数:

代码语言:javascript
复制
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

下面是一个用法示例:

代码语言:javascript
复制
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

希望它能帮上忙!

的答案为什么不正确的详细信息:正如在R.Mcomment中指出的那样,Edgar Andrés Margffoy Tuay的ZCA美白功能包含一个小但关键的错误:应该删除np.diag(S)。Numpy将S作为m x 1向量返回,而不是m x m矩阵(这在其他svd实现中很常见,例如Matlab)。因此,ZCAMatrix变量变成一个m x 1向量,而不是应该的m x m矩阵(当输入是m x n时)。(此外,Andfoy答案中的协方差矩阵只有在X预先居中时才有效,即均值为0)。

ZCA的其他参考资料:您可以在中查看斯坦福大学UFLDL ZCA美白练习here的完整答案。

票数 16
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31528800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档