MemoryError : python에서 word2vec를 사용하는 동안 모양 및 데이터 유형 float32로 배열을 할당 할 수 없습니다.

수 라즈

다음 코드를 사용하고 있기 때문에 Wikipedia 텍스트 데이터에서 word2vec 모델을 훈련 시키려고합니다.

import logging
import os.path
import sys
import multiprocessing

from gensim.corpora import  WikiCorpus
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence


if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])
    logger = logging.getLogger(program)

    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))

    # check and process input arguments

    if len(sys.argv) < 3:
        print (globals()['__doc__'])
        sys.exit(1)
    inp, outp = sys.argv[1:3]

    model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())

    # trim unneeded model memory = use (much) less RAM
    model.init_sims(replace=True)

    model.save(outp)

그러나 프로그램 실행 20 분 후에 다음과 같은 오류가 발생합니다.

에러 메시지

고조모

이상적으로 는 스크린 샷이 아닌 오류 텍스트 를 질문에 붙여 넣는 것이 좋습니다. 그러나 두 가지 핵심 라인이 있습니다.

<TIMESTAMP> : INFO : estimated required memory for 2372206 words and 400 dimensions: 8777162200 bytes
...
MemoryError: unable to allocate array with shape (2372206, 400) and data type float32

말뭉치를 한 번 통과 한 후 모델은 얼마나 많은 고유 단어가 살아남 8777162200 bytes을지 알게되었으며 , 모델이 얼마나 큰지를보고합니다. 하나는 약 8.8GB입니다. 그러나 필요한 벡터 배열을 할당하려고 할 때 MemoryError사용할 수있는 컴퓨터 주소 지정 가능 메모리 (RAM)가 충분하지 않음을 나타내는이 표시됩니다.

다음 중 하나를 수행 할 수 있습니다.

  1. 기존 시스템에 RAM을 추가하여 더 많은 메모리가있는 곳에서 실행합니다. 또는
  2. 주로 학습하려는 고유 한 단어 벡터의 수 또는 차원 크기를 줄여 필요한 메모리 양을 줄입니다.

기본 min_count=5매개 변수를 min_count=10또는 min_count=20또는 같은 것으로 늘리면 단어 수를 줄일 수 있습니다 min_count=50. (아마도 2 백만 개 이상의 단어 벡터가 필요하지는 않습니다. 수만 단어의 어휘만으로도 많은 흥미로운 결과를 얻을 수 있습니다.)

max_final_vocab유지할 고유 단어의 정확한 수를 지정하기 위해 값 을 설정할 수도 있습니다 . 예를 들어 max_final_vocab=500000는 가장 자주 사용되는 500000 단어 만 유지하고 나머지는 무시합니다.

를 줄이면 size메모리도 절약됩니다. 의 설정은 size=300워드 벡터에 널리 사용되며 메모리 요구 사항을 1/4로 줄입니다.

함께 사용 size=300, max_final_vocab=500000하면 필요한 메모리가 2GB 미만으로 줄어 듭니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관