Memory Error 처리 방법
MemoryError: Unable to allocate 4.34 GiB for an array with shape (40442, 80, 60, 3) and data type float64
.오류 소스 코드:data = np.array(data, dtype="float") / 255.0# float64
몇 가지 발견된 해결 전략을 기록하다.
1. 저밀도 데이터 저장
는 일반적으로 numpy를 통해 얻은 16자리 부동점수를 계산한다.float64가 차지하는 메모리는 float32의 2배이고 float16의 4배이다. 예를 들어 CIFAR10 데이터 세트에 대해 float64로 표시하면 60000이 필요하다. 32개 8/1024개 데이터 세트의 경우 1.4G 60000*32**3****3*****3=1.4G 60000 8/8/8/1024 = 1.4G 60000***3******************3=1.4G 60000 32\3272727272727272727272727272 32\3287327272727272727272727272 3?=1010108==108\272727데이터 세트를 메모리로 가져오려면 1.4G가 필요합니다.플로트32를 적용하면 0.7G, 플로트16을 적용하면 0.35G 정도면 된다.메모리를 얼마나 많이 차지하는지는 시스템 운영 효율에 심각한 영향을 미치기 때문에 데이터 집합 파일은 모두 uint8로 데이터가 존재하고 파일을 최소화한다.
2. 업데이트 python은 64비트, 업데이트 Pandas/Numpy 라이브러리는 64비트
\Python 32bit 최대 2G 메모리만 사용할 수 있습니다.32비트의 파이톤이 설치한pandas와Numpy도 32비트에 불과하다. 그러면 메모리가 2G를 초과하면 자동으로 메모리를 종료하고 64bit python은 이 제한이 없다.
\Python 32bit 최대 2G 메모리만 사용할 수 있습니다.32비트의 파이톤이 설치한pandas와Numpy도 32비트에 불과하다. 그러면 메모리가 2G를 초과하면 자동으로 메모리를 종료하고 64bit python은 이 제한이 없다.
python
를 입력하십시오.3. pycharm의 실행 메모리 수정
메모리 사용률이 높지 않지만 MemoryError가 나타나면 메모리 제한이 있을 수 있습니다.
-Xmx750m
은 -Xmx4096m
에 4G 메모리를 분배하고 상황에 따라 정한다.4. 가상 메모리 확장
구체적인 설정:
물리적 및 가상 메모리: 물리적 메모리
가상 메모리
당신의 메모리가 이미'구제불능'일 정도로 크다고 해도 가상 메모리를 닫아서는 안 된다. 전통적인 RAM'백업'이라는 기능을 제외하고 윈도도 가상 메모리를 이용하여 특정한 조작을 수행하기 때문이다.이 밖에 가상 메모리의 열기는 메모리 명중률을 높이고 시스템의 안정성을 확보하는 데 도움이 되며 개별 소프트웨어(예를 들어 포토샵, 3Dmark 등)도 실행할 때 가상 메모리가 필요하다.
컴퓨터, 가상 메모리, 물리 메모리, 어떤 차이가 있습니까?어느 것이 더 좋아요.|메모리 관리 소개
5. 데이터 읽기 최적화
TensorFlow가 데이터를 읽는 방법에 대해 홈페이지는 세 가지 방법을 제시했다.
사용자가 입력 데이터를 처리하는 전형적인 절차는 먼저 입력 데이터 집합을 파일 시스템 종류에서 메모리로 읽은 다음에 모델에 필요한 입력 데이터 형식으로 전환한 다음에 어떤 방식으로 데이터 흐름도를 전송하고 진정한 모델 훈련 과정을 시작하는 것이다.입력 데이터 세트는 일반적으로 파일 시스템 유형과 입력 데이터 세트 크기에 따라 두 가지 데이터 읽기 방법이 있습니다.
희소 데이터의 저장
데이터가 희소한 상황에서 만약에 훈련이 대량의 원 hot 특징을 집중한다면 이때dense의 데이터를sparse로 저장하는 방식은 메모리의 점용을 줄일 수 있다. scipy의sparse 모듈을 참고하면 안에sparse 저장을 지원하는 여러 가지 데이터 구조가 있어 직접 호출할 수 있다.그러나 이 모듈의 집중 데이터 구조는 적어도dense 데이터의 2-3배의 공간을 저장해야 한다. 즉, 만약에 수조에서sparse의 절반, 심지어 더 적으면sparse구조를 사용하면 더 많은 공간을 차지하고 데이터에서 대량으로 희소한 상황에서만 사용할 수 있다.
python 처리 대훈련 집합 과정 중 만났던 Memory Error 문제 해결
pandas에서 read 사용csv 블록 읽기
with open(path) as f:
data = pd.read_csv(path, sep=',',engine = 'python',iterator=True)
loop = True
index,chunkSize,chunks = 0,1000,[]
while loop:
try:
print(index)
chunk = data.get_chunk(chunkSize)
chunks.append(chunk)
index+=1
except StopIteration:
loop = False
print("Iteration is stopped.")
print(' ')
data = pd.concat(chunks, ignore_index= True)
read()/readline()/readlines()
read()
: 파일의 모든 내용을 한꺼번에 읽을 수 있으며 파일이 작으면 한꺼번에 읽는 것이 가장 편리하다.read(size)
: 매번 최대 크기의 내용을 읽을 때마다 파일 크기를 확정하지 못하면read(size)를 반복해서 호출하여 비교적 안전하다.readline()
: 매번 한 줄의 내용을 읽는다.readlines()
: 모든 내용을 한 번에 읽고 줄로list를 되돌려줍니다. 프로필이면readlines ()를 호출하는 것이 가장 편리합니다. def read_in_chunks(filePath, chunk_size=1024*1024):
"""
Lazy function (generator) to read a file piece by piece.
Default chunk size: 1M
You can set your own chunk size
"""
with open(filePath) as file_object:
while True:
chunk_data = file_object.read(chunk_size)
if not chunk_data:
break
yield chunk_data
if __name__ == "__main__":
filePath = './path/filename'
for chunk in read_in_chunks(filePath):
process(chunk) #
HDF5 파일
일괄 읽기/쓰기 HDF5 파일:Python 처리 HDF5 파일:h5py 라이브러리
TFRecords 형식
TFRecords 형식과 h5py 형식은 유사한 효용이다.
TensorFlow 학습노트의 30분 동안 TFRecords 포맷으로 데이터를 효율적으로 처리하는 tensorflow TFRecords 파일의 생성과 읽기 방법을 배웁니다
6. 수동 회수 변수(Python)
Python의 쓰레기 회수 메커니즘은 비교적 게으르다. 때로는 하나의 for 순환 중의 변수를 다 써도 회수하지 않고 다음에 다시 초기화할 때 공간을 다시 개척한다. 이때 수동으로델이라는 변수를 del x
하고 import gc
한 다음에 수동으로gc.collect()
할 수 있다.
Python 학습:numpy 라이브러리 데이터 양이 너무 많아 Memory Error 문제 해결 방법 요약win10 pycharm 출현 Memory Error와 Unable to allocate array with shape
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.