np.array текстов объем памяти - PullRequest
       32

np.array текстов объем памяти

0 голосов
/ 18 февраля 2020

У меня есть список (возможно, длинных) строк.

Когда я конвертирую его в np.array, у меня довольно быстро заканчивается ОЗУ, потому что кажется, что он занимает гораздо больше памяти, чем простой список. Почему и как с этим бороться? Или, может, я просто что-то не так делаю?

Код:

import random
import string
import numpy as np
from sys import getsizeof

cnt = 100 
sentences = []

for i in range(0, cnt):
    word_cnt = random.randrange(30, 100)
    words = []
    for j in range(0, word_cnt):
        word_length = random.randrange(20)
        letters = [random.choice(string.ascii_letters) for x in range(0, word_length)]
        words.append(''.join(letters))
    sentences.append(' '.join(words))

list_size = sum([getsizeof(x) for x in sentences]) + getsizeof(sentences)
print(list_size)

arr = np.array(sentences)
print(getsizeof(arr))
print(arr.nbytes)

Вывод:

76345
454496
454400

Я не уверен, что использую getsizeof() правильно, но я начал исследовать это, когда заметил проблемы с памятью, так что я почти уверен, что что-то происходит:)

(Бонусный вопрос)

Я пытаюсь запустить нечто подобное до https://autokeras.com/examples/imdb/. Исходный пример требует около 3 ГБ памяти, и я хотел использовать больший набор данных. Может быть, есть какой-нибудь лучший способ?

Я использую python3 .6.9 с numpy == 1.17.0 в Ubuntu 18.04.

...