작성
·
164
0
안녕하세요 딥러닝 CNN 완벽가이드를 수강하는 학생입니다.
다름이 아니라 resnet을 구현하고 cifar10으로 성능테스트를 해보는 과정에서 의문이 있어 질문드립니다.
처음 sequence dataset을 설명해주셨을 때(catndog), self.images_filenames = images_filenames를 통해 데이터프레임에 있는 image의 경로를 받아오면 메모리에 문제가 없는데 만약 self.images_filenames에 이미지의 numpy array 형태로 받아오면 메모리가 터질수 있다라고 설명하셨는데요.
cifar10의 데이터는 numpy array형태로 되어있는 걸로 알고있는데 self.images_array = images_array를 통해 cifar10의 이미지 array를 받아오면 self.images_array에 cifar10의 모든 image array가 들어오게 되는게 아닌가요?? 그렇게 되면 메모리가 터진다고 말씀하셨던거 같은데...
제가 잘못이해하고 있는건지 이 부분이 좀 헷갈려서 질문드립니다
답변 1
0
안녕하십니까,
개별 이미지 데이터의 경우 1장이 차지하는 메모리 크기가 이미지 사이즈(해상도)에 많은 영향을 받습니다.
사이즈가 클 수록 메모리를 많이 차지 하게 됩니다. 거기다 이미지 갯수도 많다면 한번에 모든 이미지를 다 메모리에 올릴 수가 없습니다. 그래서 순차적으로 batch size만큼 이미지 파일을 메모리로 퍼 올리는 작업을 ImageDataGenerator 등에서 수행합니다.
하지만 cifar10은 image 사이즈가 매우 작기 때문에 한번에 모든 이미지를 다 메모리에 올릴 수 있습니다. 그렇기 때문에 numpy 형태의 image array로 데이터가 제공됩니다.
감사합니다.