【问题标题】:How to apply zca on a huge image dataset with limited memory?如何在内存有限的巨大图像数据集上应用 zca?
【发布时间】:2017-11-04 02:59:43
【问题描述】:

谷歌告诉我的是:

  1. 对于kerasImageDataGenerator 函数似乎有一个开箱即用的 zca_whitening。但是如果设置了这个选项,它需要在整个数据集X上调用ImageDataGenerator.fit。所以这不是一个选项。

  2. 对于sklearnIncrementalPCA 似乎适用于庞大的数据集,但我不知道如何以生成器样式将 PCA 旋转到 ZCA。

感谢您的帮助!

【问题讨论】:

  • 您找到解决问题的方法了吗?如果是,请在此处发布

标签: machine-learning deep-learning pca


【解决方案1】:

我在ZCA transformation 之后定义了一个可能有用的函数:

def ZCAtransform(X,IPCA_model): 
      # get the Eigenvectors and Eigenvalues
      U = IPCA_model.components_.transpose()
      S = np.sqrt(IPCA_model.explained_variance_) 
      Xdemeand = (X-np.mean(X,0)).transpose()

      #get the transformed data 
      # Xproj' =  U * diag(1/(S+I*epsilon)) * U' * X_data 
      return (U.dot(np.diag(1/(S+IPCA_model.noise_variance_))).dot(U.transpose()).dot(Xdemeand)).transpose()

Xproj = ZCAtransform(X, ipca)

根据 Scikit-learn 中给定的example,我能够生成 Iris 数据集的 ZCA,如下所示:

ZCAWhitened PCA

【讨论】:

  • 您能否详细说明 IPCA_model 的来源并给出一个完整的工作示例,包括导入的包?谢谢
猜你喜欢
  • 2017-09-14
  • 2018-06-26
  • 2011-07-26
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多