Получение ошибки памяти при преобразовании матрицы spars в массив с именами столбцов. Этот массив является входным для обучающей модели

#python #tensorflow #out-of-memory

#python #тензорный поток #нехватка памяти

Вопрос:

Мои обучающие данные состоят из 5 миллионов строк описания продукта со средней длиной 10 слов. Я могу использовать либо CountVectorizer, либо Tf-IDF для преобразования моей функции ввода. Однако после преобразования объекта в разреженную матрицу при преобразовании его в массив или плотный массив я постоянно получаю ошибку памяти. Векторизатор count возвращает токен столбца ~ 130 тыс. Ниже приведены два метода, которые я пытаюсь реализовать. Пожалуйста, обратите внимание, что система, над которой я работаю, имеет 512 ГБ памяти. Ниже приведена ошибка:

верните np.zeros(self.shape, dtype=self.dtype, order=order) . Ошибка памяти

Способ 1

 from sklearn.feature_extraction.text import CountVectorizer

vect1 = CountVectorizer(ngram_range= (1,2), min_df = 20) 

#vect1.fit(train_data['description_cleaned'])

train_dtm1 = vect1.fit_transform(train_data)

dtm_data = pd.DataFrame(train_dtm1.toarray(), columns=vect1.get_feature_names())
  

Способ 2

 tfidf  = TfidfVectorizer(stop_words='english',  ngram_range=(1, 2), max_df=0.5, min_df=20, use_idf=True)

corpus = tfidf.fit_transform(train_data)

dtm_data = pd.DataFrame(corpus_split.todense(), columns=tfidf.get_feature_names())
  

dtm_data переходит в разделение тестового поезда, которое далее переходит в Keras ANN.
Как решить эту проблему с памятью?

Комментарии:

1. сколько памяти у вашего компьютера?

Ответ №1:

Ошибка нехватки памяти возникает, когда python использует больше памяти, чем доступно. Наряду с вашей системной памятью посмотрите на память вашей видеокарты, если вы используете tensorflow-gpu. Возможно, вы захотите взглянуть на Google colab, который запускает программу python в облаке.