안녕하세요. 비스카이비전입니다. 저는 최근에 윈도우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로 업그레이드시켜줍니다. 어쩌면 이것이 근본적으로 가장 좋은 방법이라고 할 수 있습니다.
여러분의 에러도 해결되었길 바랍니다. 끝까지 읽어주셔서 감사합니다. 항상 질문과 지적 및 토론에 열려 있으니 댓글 남겨주시면 살펴보겠습니다.
관련 글
참고자료
[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""
(이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.)
'Dev > python' 카테고리의 다른 글
[python] 문자열 포맷팅이란? 3가지 문자열 포맷팅 방법들 (0) | 2020.06.22 |
---|---|
[python] 스파이더 fullscreen 모드 푸는 법 (0) | 2020.06.22 |
[python] 뽀로로 친구들을 검출해보자(Tensorflow object detection API) (0) | 2020.06.19 |
[python] 다른 파일에 있는 함수를 가져와서 사용하려면? (0) | 2020.06.18 |
[python] tensorflow에서 GPU 사용가능 여부 확인하기(+ 실제로 얼마나 빠른지 확인) (9) | 2020.06.09 |
[python] convolution과 activation을 분리해서 해주려면? (4) | 2020.06.09 |
[python] KeyError: 'mae' 또는 KeyError: 'acc'를 만났을 때 해결방법 (0) | 2020.06.06 |
[python] 파이썬 유용한 내장 함수들 10개 정리 (0) | 2020.05.23 |