我正在尝试基于大量提取的MFCC功能生成通用背景模型(UBM),但是在将数据拟合到模型中时,我一直得到MemoryError
。这是相关的代码部分:
files_features.shape
(2469082, 56)
gmm = GMM(n_components = 1024, n_iter = 512, covariance_type = 'full', n_init = 3)
gmm.fit(features)
有没有一种方法可以解决此错误或分解数据处理以避免内存错误。我是该领域的新手,希望能得到我的帮助。
[更新]
不幸的是,here中提到的答案不能解决我的问题,因为假定data_set具有较低的方差,而在我的情况下:
round(np.var(files_features), 3)
47.781
增量拟合可能是一个解决方案,但是scikit-learn
对于GMM没有这样的partial_fit
。我将不胜感激有关如何解决此问题的任何建议,无论是替代性的lib建议,partial_fit参考实现还是逐批处理数据(在这种情况下均不起作用,因为GMM.fit()
缺少内存)?
答案 0 :(得分:1)
使用Dask很简单。
只需使用Dask的DataFrame而不是pandas即可,其他所有内容都可以正常工作。
作为scikit-learn的替代方法,可以使用Turis' Graphlab Create,它可以处理任意大型数据集(尽管我不确定它是否支持GMM)。
答案 1 :(得分:0)
对于那些有相同问题的人,我建议使用Bob library,它支持大数据处理甚至提供并行处理。
在我的用例Bob中,由于已经实现了所有相关功能,因此非常适合GMM-UBM系统的开发。