2017-11-04 54 views
0

是谷歌告诉我的是:如何将ZCA应用于内存有限的大型图像数据集?

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

  2. 对于sklearnIncrementalPCA似乎与一个巨大的数据集一起工作,但我不知道如何将PCA旋转到ZCA的发生器风格。

感谢您的帮助!

回答

0

我已经定义可能会有所帮助继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) 

继在给定的example Scikit学习,我能够生成虹膜数据集的ZCA如下图所示:

ZCAWhitened PCA

相关问题