Как выделить больше памяти для различных процессов, созданных с использованием concurrent.futures в python для многопроцессного машинного обучения с большими наборами данных? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь одновременно использовать KNN и линейную SVM (из библиотеки scikit-learn) для проекта машинного обучения классификации изображений в Python. Проблема в том, что я продолжаю получать это, когда пытаюсь загрузить обе модели через joblib.load для предсказания:

MemoryError: невозможно выделить 182. MiB для массива с формой (23814000,) и данными type float64

Пока я исследовал такие возможности, как:

  1. Использование меньшего количества данных моего изображения во время обучения
  2. Преобразование обучающего набора на np.uint8, так как мои изображения черно-белые (0 ~ 1) (без которого даже обучение моделей было бы невозможно),
  3. Обновление с Python -32 до Python -64

Мне просто интересно, могу ли я вместо этого просто выделить больше памяти для процесса (ов). Я использую Windows, поэтому библиотека resources выходит за рамки.

Я пробовал использовать многопроцессорную обработку, то есть загружать каждую модель в разные процессы и прогнозировать через нее. а затем объединение результатов, думая, что каждый процесс будет использовать отдельную память, что позволяет мне обойти проблему с памятью, но попытка загрузить модели в разные процессы создает еще большую проблему с памятью. Он не предоставляет мне достаточно памяти для загрузки даже одной модели.

Пожалуйста, дайте мне свои предложения

Репозиторий проекта GitHub: https://github.com/Dhi13man/CV-HandGestureControl

...