Как справиться с ошибкой памяти при установке GaussianMixture в sklearn python?

Я пытаюсь подогнать GaussianMixture, используя sklearn, к множеству изображений кошек и собак. Я загружаю массив numpy размером (50,30000), где 50 точек данных (25 изображений кошек и 25 собак), 30000 — это количество функций после преобразования каждого изображения в массив numpy и изменения размера до (100,100,3). Выдает ошибку памяти. У меня 4 ГБ ОЗУ и 70% используется до запуска этого кода. Может ли кто-нибудь предложить мне, как отладить, сколько памяти используется методом подгонки GaussianMixture в sklearn. Или может кто-нибудь предоставить некоторый код, чтобы вместить его в партии.

Ниже приведен код

print(img_coll_cat_dog.shape)
print(img_coll_cat_dog.nbytes)
print(img_coll_cat_dog.itemsize)

Результат:

(50, 30000)
12000000 bytes
8 

gmix = mixture.GaussianMixture(n_components=2, covariance_type='full')
gmix.fit(img_coll_cat_dog)

Ниже приведена ошибка, которую я получаю.

MemoryError                               Traceback (most recent call last)
<ipython-input-32-c0370476a619> in <module>()
      1 gmix = mixture.GaussianMixture(n_components=2, covariance_type='full')
----> 2 gmix.fit(img_coll_cat_dog)

~/dl/dl3/lib/python3.5/site-packages/sklearn/mixture/base.py in fit(self, X, y)
    205 
    206             if do_init:
--> 207                 self._initialize_parameters(X, random_state)
    208                 self.lower_bound_ = -np.infty
    209 

~/dl/dl3/lib/python3.5/site-packages/sklearn/mixture/base.py in _initialize_parameters(self, X, random_state)
    155                              % self.init_params)
    156 
--> 157         self._initialize(X, resp)
    158 
    159     @abstractmethod

~/dl/dl3/lib/python3.5/site-packages/sklearn/mixture/gaussian_mixture.py in _initialize(self, X, resp)
    629 
    630         weights, means, covariances = _estimate_gaussian_parameters(
--> 631             X, resp, self.reg_covar, self.covariance_type)
    632         weights /= n_samples
    633 

~/dl/dl3/lib/python3.5/site-packages/sklearn/mixture/gaussian_mixture.py in _estimate_gaussian_parameters(X, resp, reg_covar, covariance_type)
    283                    "diag": _estimate_gaussian_covariances_diag,
    284                    "spherical": _estimate_gaussian_covariances_spherical
--> 285                    }[covariance_type](resp, X, nk, means, reg_covar)
    286     return nk, means, covariances
    287 

~/dl/dl3/lib/python3.5/site-packages/sklearn/mixture/gaussian_mixture.py in _estimate_gaussian_covariances_full(resp, X, nk, means, reg_covar)
    162     """
    163     n_components, n_features = means.shape
--> 164     covariances = np.empty((n_components, n_features, n_features))
    165     for k in range(n_components):
    166         diff = X - means[k]

MemoryError: 

Буду признателен за любую оказанную помощь.


person Surjya Narayana Padhi    schedule 25.09.2017    source источник


Ответы (1)


Попробуйте установить covariance_type='diag'

person David Lee    schedule 23.02.2018