[python] 메모리 에러 해결법(MemoryError: Unable to allocate ## for an array with shape ## and data type ##)

코딩/python|2020. 6. 10. 19:33

저는 윈도우즈 10, 아나콘다 환경에서 파이썬 코드를 실행하다가 종종 다음과 같은 에러를 만났었습니다. 

 

 

메모리에러 즉, 램(RAM) 메모리가 부족해서 생기는 오류입니다. 참고로 램은 주기억장치로서 이 공간이 커야 동시에 많은 일을 처리할 수 있습니다. 메모리에러의 해결법은 크게 네 가지입니다. 

 

1. 그냥 다시 실행해본다

어떤 경우에는 그냥 동일한 코드를 다시 실행했을 뿐인데도 더이상 오류가 안 뜨기도 하더라고요. 그런데 만약 코드를 다시 실행했는데도, 컴퓨터를 재부팅하고 실행했는데도 이 에러가 뜬다면, 다음과 같이 한 번 해보시길 바랍니다. 

 

2. 배치사이즈(batch_size)를 줄인다

딥러닝 모델 훈련 때 배치사이즈가 너무 크면, 한번에 많은 데이터를 처리해야하기 때문에 램의 메모리를 순간적으로 다 소진해버릴 수 있습니다. 따라서, 배치사이즈를 줄인다면 이 문제를 겪지 않을 수도 있습니다. 그런데 배치사이즈를 줄이면 안되는 상황이라면 다음 3번과 같이 해보시길 바랍니다. 

 

3. 페이징 파일 크기를 증가시킨다

윈도우즈 10을 사용하시고 있는 경우에, 윈도우즈 키 옆에 SystemPropertiesAdvanced를 입력하면 다음과 같은 창이 뜹니다. 

 

 

여기서 성능의 설정을 클릭합니다. 그 다음에 성능 옵션에서 고급으로 들어가면 다음과 같은 화면이 뜹니다. 

 

 

 

여기서 가상 메모리 파트의 변경을 클릭합니다. 페이징 파일 크기를 변경하기 위함입니다. 여기에 "페이징 파일은 Windows에서 RAM처럼 사용하는 하드 디스크의 영역입니다"라고 간단히 설명되어 있습니다. 

 

 

사용자 지정 크기에서 처음 크기는 램 크기의 1.5배로 해주고, 최대 크기는 처음 크기의 3배로 해줍니다. 예를 들어, 8GB의 램이라면 1GB가 1024MB이므로 1024x8x1.5=12288을 처음 크기에 입력해주고, 최대 크기는 그것의 3배인 36864를 입력해줍니다. 어떻게 이러한 계산법이 생긴 것인지는 저도 잘 모르겠지만, 참고자료 [1]에서 이렇게 해주라고 하더군요. 아무튼 이렇게 설정한 후에 컴퓨터를 재부팅합니다. 저도 이렇게 했더니 에러가 더이상 안났습니다. 

 

4. RAM을 추가 장착한다

아예 한번에 더 많은 일을 처리할 수 있게 하는 것이죠. 8GB 램이라면 16GB로 업그레이드시켜줍니다. 어쩌면 이것이 근본적으로 가장 좋은 방법이라고 할 수 있습니다. 

 

여러분의 에러도 해결되었길 바랍니다. 끝까지 읽어주셔서 감사합니다. 항상 질문과 지적 및 토론에 열려 있으니 댓글 남겨주시면 살펴보겠습니다. 

 

 

b스카이비전의 추천글 

램(RAM)이란 무엇인가? 

삼성 오디세이 노트북 램 교체(업그레이드)하기

 [python] KeyError: 'mae' 또는 KeyError: 'acc'를 만났을 때 해결방법

 

 

<참고자료>

[1] https://stackoverflow.com/questions/57507832/unable-to-allocate-array-with-shape-and-data-type, stackoverflow, "Unable to allocate array with shape and data type"

[2] https://trainingsupport.microsoft.com/en-us/tcmpd/forum/all/i-am-getting-below-error-memoryerror-unable-to/badac065-c35b-4853-9122-e7607e40ecae, 마이크로소프트 trainingsupport, "I am getting below error--"MemoryError: Unable to allocate array with shape (16519, 16404) and data type float64""

  1. BlogIcon DNA구너 2020.06.11 23:58 신고 댓글주소  수정/삭제  댓글쓰기

    캐글 노트북에서 30기가 달아주는건 폼은 아닌 거 같아요.