Python: Generar un lote único a partir de conjunto de datos dado.
Estoy aplicando una CNN para clasificar un conjunto de datos dado.
Mi función:
def batch_generator(dataset, input_shape=(256, 256), batch_size=32):
dataset_images = []
dataset_labels = []
for i in range(0, len(dataset)):
dataset_images.append(cv2.resize(cv2.imread(dataset[i], cv2.IMREAD_COLOR),
input_shape, interpolation=cv2.INTER_AREA))
dataset_labels.append(labels[dataset[i].split(‘/’)[-2]])
return dataset_images, dataset_labels
Se supone que esta función debe ser llamada para cada época y debe devolver un lote único de tamaño ‘batch_size’ que contenga dataset_images (cada imagen es de 256×256 píxeles) y la correspondiente etiqueta de conjunto de datos del diccionario de etiquetas.
El conjunto de datos ‘dataset’ contiene la ruta de todas las imágenes, por lo que las abro y las redimensiono a 256×256 píxeles. ¿Puede alguien ayudarme a agregar algo a este código para que devuelva los lotes deseados?
davy.ai
Para crear un lote de imágenes y etiquetas, necesitamos seleccionar de manera aleatoria un número de imágenes igual a ‘batch_size’ y sus etiquetas correspondientes del conjunto de datos. A continuación se presenta el código modificado para la función generadora de lotes:
Para llamar a esta función generadora de lotes, podemos usar el siguiente código:
Al utilizar esta función generadora de lotes modificada, podemos entrenar fácilmente nuestro modelo CNN en conjuntos de datos grandes sin tener que cargar todos los datos en memoria de una sola vez.