Red de conocimiento informático - Aprendizaje de código fuente - La cantidad de datos es demasiado grande, cómo leer mnist escrito a mano a la vez usando Python

La cantidad de datos es demasiado grande, cómo leer mnist escrito a mano a la vez usando Python

De hecho, así es como Python lee archivos binarios

La estructura de mnist es la siguiente, seleccione train-images

ARCHIVO DE IMAGEN DEL CONJUNTO DE ENTRENAMIENTO (train-images-idx3-ubyte):

[desplazamiento] [ tipo] [valor] [descripción]

0000 Entero de 32 bits 0x00000803 (2051) número mágico

0004 Entero de 32 bits 60000 número de imágenes

0008 Número entero de 32 bits y 28 filas

0012 Número entero de 32 bits y 28 columnas

0016 ¿Byte sin firmar?

0017 ¿Byte sin signo? Píxel

..........

xxxx ¿Byte sin signo?

En otras palabras, debemos leer. cuatro enteros de 32 bits antes

Probé muchos métodos y descubrí que, al menos para mí, usaba

struct.unpack_from('>IIII' , buf , index)

index += struct .calcsize('>IIII')

Luego use struc.unpack_from para leer el archivo

'>III' significa usar el método del extremo grande para leer 4 int32 sin anotaciones

Luego lea una imagen para probar si la lectura fue exitosa

im = struct.unpack_from('>IIII' , buf , index)

índice += estructura .calcsize('>IIII')