2016-04-06 10 views
0

Я получаю следующее сообщение об ошибке для этого кода:Ошибка памяти в Python с использованием Numpy массива

model = lda.LDA(n_topics=15, n_iter=50, random_state=1) 
model.fit(X) 
topic_word = model.topic_word_ 
print("type(topic_word): {}".format(type(topic_word))) 
print("shape: {}".format(topic_word.shape)) 
print ("\n") 
n = 15 
doc_topic=model.doc_topic_ 
for i in range(15): 
    print("{} (top topic: {})".format(titles[i], doc_topic[0][i].argmax())) 

topic_csharp=np.zeros(shape=[1,n]) 
np.copyto(topic_csharp,doc_topic[0][i]) 
for i, topic_dist in enumerate(topic_word): 
    topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n+1):-1] 
    print('*Topic {}\n- {}'.format(i, ' '.join(topic_words))) 

Ошибка:

Traceback (most recent call last): 
File "C:\Users\csharp.py", line 56, in <module> 
topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n+1):-1] 
MemoryError 

Док Я вписываясь в модели имеет около 1,50,000 линий текста. vocab_size: 558270 n_words: 13075390 (после предварительной обработки)

Как я могу решить эту ошибку?

+0

Сколько ** бесплатной ** ОЗУ у вас есть на вашем компьютере (до того, как вы выполните этот код на Python)? – Yaron

+0

2 ГБ на 8 Гб бесплатно. –

+0

Можете ли вы просто купить больше памяти? – user2357112

ответ

0

Если ваши массивы слишком велики для ОЗУ, используйте numpy.memmap. См. http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.memmap.html

+0

memmap не принимает кортеж (vocab), нуждается в строке или буфере. –

+1

Правда, но в примере к ссылке, которую я поделил, она объясняет, как вы можете создать временный файл в качестве буфера, а затем вы можете поместить в него vocab. Ваш фрагмент кода не содержит часть, в которой вы создаете словарь, но вы можете поместить его прямо в объект np.memmap (вам необходимо определить априорную форму при ее создании). Затем сделайте аргумент на нем на месте. Наконец, посмотрите, можете ли вы взять срез, когда вы назначаете topic_words без исчерпания памяти. –

 Смежные вопросы

  • Нет связанных вопросов^_^