我正在嘗試使用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)。