1

我正在尝试基于大量提取的 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)

有没有办法解决这个错误或者分解数据的处理以避免内存错误。我对这个领域很陌生,如果能得到任何帮助,我将不胜感激。

[更新]

不幸的是,这里提到的答案并不能解决我的问题,因为假设 data_set 具有低方差,而在我的情况下:

round(np.var(files_features), 3)
47.781

增量拟合可能是一种解决方案,但对于 GMMscikit-learn没有这样的解决方案。partial_fit我将不胜感激有关如何解决此问题的任何建议,无论是替代库建议、partial_fit 参考实现还是批量处理数据(在这种情况下不起作用,因为GMM.fit()内存较少)?

4

2 回答 2

2

使用Dask相当简单。
只需使用 Dask 的 DataFrame 而不是 pandas',其他一切都应该可以正常工作而无需任何更改。

作为 scikit-learn 的替代方案,您可以使用Turis 的 Graphlab Create,它可以处理任意大型数据集(尽管我不确定它是否支持 GMM)。

于 2018-08-22T22:11:17.390 回答
1

对于有同样问题的人,我推荐使用Bob 库,它支持大数据处理,甚至提供并行处理。

在我的用例中, Bob非常适合 GMM-UBM 系统的开发,因为所有相关功能都已实现。

于 2018-09-24T15:06:36.077 回答