c recoger una gran cantidad de datos

Tengo alrededor de 0,8 millones de imágenes de 256×256 en RGB, que ascienden a más de 7GB.

Quiero usarlos como datos de entrenamiento en una neural network convolucional, y quiero ponerlos en un archivo cPickle, junto con sus tags.

Ahora, esto requiere mucha memoria, en la medida en que se necesita intercambiar con la memoria de mi disco duro y casi consumirlo todo.

¿Es esta una mala idea?

¿Cuál sería la forma más inteligente / más práctica de cargar en CNN o encurtirlos sin causar demasiado problema de memoria?

    Así es como se ve el código

    import numpy as np import cPickle from PIL import Image import sys,os pixels = [] labels = [] traindata = [] data=[] for subdir, dirs, files in os.walk('images'): curdir='' for file in files: if file.endswith(".jpg"): floc=str(subdir)+'/'+str(file) im= Image.open(floc) pix=np.array(im.getdata()) pixels.append(pix) labels.append(1) pixels=np.array(pixels) labels=np.array(labels) traindata.append(pixels) traindata.append(labels) traindata=np.array(traindata) .....# do the same for validation and test data .....# put all data and labels into 'data' array cPickle.dump(data,open('data.pkl','wb')) 

    ¿Es esta una mala idea?

    Sí, de hecho.

    Está intentando cargar 7 GB de datos de imagen comprimidos en la memoria a la vez (aproximadamente 195 GB para 800k 256 * 256 archivos RGB). Esto no funcionará. Tienes que encontrar una manera de actualizar tu imagen de CNN imagen por imagen, guardando el estado a medida que avanzas.

    También considere qué tan grande será su conjunto de parámetros CCN. Pickle no está diseñado para grandes cantidades de datos. Si necesita almacenar datos de redes neuronales en GB, es mucho mejor utilizar una base de datos. Si el conjunto de parámetros de la neural network es solo de unos pocos MB, el pickle estará bien, sin embargo.

    Es posible que también desee consultar la documentación de pickle.HIGHEST_PROTOCOL , por lo que no se queda atascado con un formato de archivo de pickle antiguo y no optimizado.