我正在尝试使用MNIST 数据集。但是,当我下载 .gz 图像文件然后解压它时,我得到了很多“压缩”字节。以下是其中的一部分:
'Tπüó<$fi˛˛˛˛Ò∆∆∆∆∆∆∆∆™4CrHr£„˛·˛˛˛˙²˛åBCCC;Ï˛jS˝—ÈˇSÅ˛Ó,;˘˛>Ö˛ª
Õ¯:~˛∂K˚9›˛¶À˛€#&˛˛M‡˛sÖ˛˛4=Ú˛˛4y˛˛€(y˛œt}´ˇˇñ]©˝˝˝˝˝˝⁄©˝˝˝’é∞˝˝z4˙˝“
Œ˝åM˚“z¯˝A—˝˝Au˜˝∆
L˜˝Á?Ä˝˝ê∞ˆ˝üÍ˝È#∆˝˝çN¯˝Ω»˝˝çÜ˝˝≠
我认为这些至少是“压缩”字节。但是,根据页面底部的“文件格式解释器”,文件的内容应该是一些 32 位整数,然后是一堆无符号字节。显然,这不是我看到的。是什么
导致这种情况发生?是因为我双击了 .gz 文件吗?是因为我没有正确解压文件吗?是因为缺乏技术知识,文件应该是这样的吗?
基本上,我上面说的是如何修复问题以及如何解决它。
顺便说一句:我在 Mac OS 10.13.3 上。该文件是从 Google Chrome 下载的
答案1
文件的内容应该是一些 32 位整数,然后是一堆无符号字节。显然,这不是我看到的。
不,这正是你所看到的。
全部文件由原始字节组成;其他一切都是解释的问题,取决于你用什么程序打开文件。
如果您在文本编辑器中打开该文件,它将尝试显示文本。它永远不会显示原始字节值,而只会显示 ASCII 表中的相应字符(或来自 Unicode 或其他代码页)。
然而,MNIST 下载页面才不是假设您的数据将以 ASCII 格式写成十进制数。相反,它直接使用字节值来编码数据:“32 位整数”分布在四个字节中(每个字节 8 位);“无符号字节”则为一个字节。
简而言之,下载的文件是自定义格式,需要特殊软件来解释;文本编辑器不行。相反:
您可以在“十六进制编辑器”程序。十六进制编辑器做显示原始字节值(它们专门用于编辑二进制文件),尽管您仍然可以理解所显示的数据。
您可以编写一个简短的程序将数据转换为文本格式。MNIST 描述的原始格式非常简单,例如,只需 5-10 行 Python 代码即可。
这些文件包含图形数据 - 原始位图,作为一系列像素。因此,通过更多的编程,它们可以转换为一系列图像文件(BMP、GIF 或 PNG)。