the content of the file should be some 32-bit integers and then a bunch of unsigned bytes. Obviously, this isn't what I'm seeing.
Não, é exatamente isso que você está vendo.
Todos os arquivos consistem em bytes brutos; tudo o mais é uma questão de interpretação e depende do programa com o qual você está abrindo o arquivo.
Se você abrir o arquivo em um editor de texto, ele tentará mostrar o texto. Ele nunca mostrará valores de byte bruto, mas apenas os caracteres correspondentes da tabela ASCII (ou de Unicode ou outra página de códigos).
No entanto, a página de download MNIST não diz que seus dados serão gravados como números decimais em ASCII. Em vez disso, ele usa diretamente valores de byte para codificar dados: um "inteiro de 32 bits" é distribuído em quatro bytes (8 bits cada); um "byte sem sinal" é, bem, um byte.
Em suma, o arquivo baixado está em um formato personalizado que requer um software especial para interpretá-lo; um editor de texto não serve. Em vez disso:
-
Você poderia abrir o arquivo em um programa "editor hexadecimal" . Os editores hexadecimais do mostram valores brutos de bytes (eles são feitos especificamente para editar arquivos binários), embora ainda seja possível fazer algum sentido dos dados mostrados.
-
Você pode escrever um programa curto para converter os dados em um formato textual. O formato original que o MNIST descreve é simples o suficiente para, por exemplo, haver de 5 a 10 linhas de Python.
-
Os arquivos contêm dados gráficos - bitmaps brutos, como uma série de pixels. Então, com mais alguma programação, eles podem ser convertidos em uma série de arquivos de imagem (BMP, GIF ou PNG).